IE9 Javascript错误

时间:2011-04-25 03:35:01

标签: javascript internet-explorer-9

使用IE 9无法正确呈现my blog的标记云。 问题似乎是围绕这些代码行:

var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz);
var li = document.createElement('li');
li.style.fontSize = fs+'px';

奇怪的是,如果删除兼容性标记,一切正常:

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/> 

但我不能这样做,或者我的不透明窗口因为另一个脚本而变黑(见Disabling ieretrofit.js on Blogger)。

任何人都可以帮我解决这个问题吗?

ps:因为它不起作用我用以下的JQuery snipet隐藏了标签云(跛脚,我知道)。

$(document).ready(function(){
  if ($.browser.msie ) {
    $("#Label1").hide();
  }
});

2 个答案:

答案 0 :(得分:0)

您遇到了IE7特定的错误。

检查出来:

http://bugs.jquery.com/ticket/4670

  哇,好错误。这不是一个jQuery错误   虽然。你可以用裸露的方式重现它   DOM功能:

     

var li =   使用document.createElement( “里”);
  li.value =“12”;

     

立即IE7   尝试访问的MSHTML.DLL崩溃   内存地址0x00000000。相同   崩溃发生在   li.setAttribute(“value”,“12”)。以来   (至少在HTML4中)a的值   &LT;李&GT;元素仅适用于a   &的孩子醇&GT;元素,我怀疑   它可能正试图访问   父节点。果然,这样做   不崩溃:

     

var ol =   使用document.createElement( “OL”); var li   = document.createElement(“li”); ol.appendChild(LI); li.value =“12”;   这个错误似乎在IE8中得到修复。

答案 1 :(得分:0)

想出来。 s方法有时会返回NaN(由于某种原因,只会在兼容模式下导致IE出现问题)。 我用isNaN方法修复了它,如下所示:

if (!isNaN(fs)) {
  li.style.fontSize = fs+'px';
 }

还有一个编辑:

if (!isNaN(c[0]) && !isNaN(c[1]) && !isNaN(c[2])) {
  a.style.color = 'rgb('+c[0]+','+c[1]+','+c[2]+')';
}

这适用于code和几种变体。