javascript - update - w3school document object
IE9中的字符DOM異常無效 (4)
createElement的API指定構造函數需要一個包含元素名稱的string
。 IE9似乎更嚴格地遵循標準。 您可以使用以下代碼完成與嘗試相同的操作:
var iframe = document.createElement("iframe");
iframe.setAttribute("id", "yui-history-iframe");
iframe.setAttribute("src", "../../images/defaults/transparent-pixel.gif");
iframe.setAttribute("style", "position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;");
http://msdn.microsoft.com/en-us/library/ms536389(v=vs.85).aspx
以前在IE8中工作的JS現在在IE9中失敗了。
document.createElement('<iframe id="yui-history-iframe" src="../../images/defaults/transparent-pixel.gif" style="position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;"></iframe>');
我得到以下異常:SCRIPT5022:DOM異常:INVALID_CHARACTER_ERR(5)
上面的代碼是不符合標準的。 該問題的解決方案是什麼?
如果你願意犧牲一點性能並且可以使用外部庫我建議使用:
原型JS
var el = new Element('iframe', {
id: "<your id here>",
src: "<your source here>",
style: "<your style here>"
});
jQuery的
var el = jQuery('<iframe>', {
id: '<your id here>',
src: "<your source here>",
style: "<your style here>"
})[0];
這樣可以解決瀏覽器之間的所有不一致問題,並且更加漂亮:-)
注意:這是未經測試的偽代碼 - 有關更多信息,請參閱Prototype JS和jQuery的官方文檔頁面。
對於jQuery.bgiframe.js,將是一個更好的解決方案來修復錯誤的IE6測試?
替換這個怎麼樣:
if($.browser.msie&&/6.0/.test(navigator.userAgent)
用這樣的東西:
if ($.browser.msie && $.browser.version=="6.0")
對於jquery.bgiframe.js:
我在前面下載了1.1.3版本
https://github.com/brandonaaron/bgiframe/blob/master/jquery.bgiframe.js
這解決了這個問題。