首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE9 Javascript错误

问IE9 Javascript错误
EN

Stack Overflow用户
提问于 2011-04-25 11:35:01
回答 2查看 1.2K关注 0票数 0

my blog的标签云在IE9中不能正确呈现,问题似乎出在这些代码行上:

代码语言:javascript
复制
var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz);
var li = document.createElement('li');
li.style.fontSize = fs+'px';

奇怪的是,如果我去掉兼容性标签,一切都会正常工作:

代码语言:javascript
复制
<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/> 

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

有人能帮我解决这个问题吗?

ps:因为它不工作,所以我用下面的JQuery片段隐藏了标签云(我知道这很差劲)。

代码语言:javascript
复制
$(document).ready(function(){
  if ($.browser.msie ) {
    $("#Label1").hide();
  }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-26 08:38:35

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

代码语言:javascript
复制
if (!isNaN(fs)) {
  li.style.fontSize = fs+'px';
 }

再做一次编辑:

代码语言:javascript
复制
if (!isNaN(c[0]) && !isNaN(c[1]) && !isNaN(c[2])) {
  a.style.color = 'rgb('+c[0]+','+c[1]+','+c[2]+')';
}

这适用于该code和几个变体。

票数 0
EN

Stack Overflow用户

发布于 2011-04-25 12:33:08

你遇到了一个IE7特有的bug。

看看这个:

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

哇,不错的bug。不过,这不是一个jQuery错误。您可以使用纯DOM函数来重现它:

var li = document.createElement("li");

li.value = "12";

尝试访问内存地址0x00000000时,MSHTML.DLL中的IE7立即崩溃。li.setAttribute("value","12")也会发生同样的崩溃。因为(至少在HTML4中)< li>元素的值仅在它是< ol>元素的子节点时才适用,所以我怀疑它可能试图访问父节点。果然,这不会崩溃:

var ol = document.createElement("ol");var li = document.createElement("li");ol.appendChild(li);li.value = "12";此错误似乎已在IE8中修复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5774919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档