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 JSjQuery的官方文檔頁面。


對於jQuery.bgiframe.js,將是一個更好的解決方案來修復錯誤的IE6測試?

替換這個怎麼樣:

if($.browser.msie&&/6.0/.test(navigator.userAgent)

用這樣的東西:

if ($.browser.msie && $.browser.version=="6.0")





domexception