IE7中的间歇性运行时错误:发生在第0行,是否需要对象?咦?

时间:2009-09-18 03:19:47

标签: javascript jquery internet-explorer-7 runtime-error

我正在处理的网站显示间歇性运行时错误,但仅限于IE7和8.此错误几乎是随机出现的(例如,它可能会在初始页面加载时弹出一次,或者可能不会弹出,直到第n页加载)。该错误表示它出现在第0行,错误是“需要对象”。我在整个网站上使用jQuery但是在片段中禁用它(即各种插件和诸如此类的东西)并没有解决问题。我还在摇头,但想得到这个“帮助!”如果有人之前处理过这样的事情,请使用stackoverflow。

它的间歇性真的是我的屁股。

4 个答案:

答案 0 :(得分:3)

根据你的回答,我猜想id为'header-section'的元素位于页面的顶部,偶尔会在页面的其余部分加载之前应用css规则。这意味着表达式尝试在该元素存在之前评估“content-section”的offsetHeight。

我有一些关于如何处理这个问题的建议,但你必须尝试一下才能评估它们的用处。

1 /而不是根据'header-section'的id制定规则,而是根据类的header-section进行设置。不要将此类添加到标记中,而是在完成文档加载后通过jquery添加它 - 保留元素的id,因为它是......

$(document).ready(function(){
  $("#header-section").addClass("header-section");
});

2 /使规则更容忍'未找到'内容部分' - 不确定表达式的评估频率,因为我从未觉得需要在css规则中使用表达式,所以这可能行不通

#header-section {margin-top: expression((0 - (this.offsetHeight + (document.getElementById("content-section") ? document.getElementById("content-section").offsetHeight : 0))) + "px");}

让我知道你是怎么过的。

P.S。我不知道该规则试图实现什么 - 我用我假设的相同布局模拟了一个页面,它所做的只是将大量内容移出页面顶部,以防止它永远被人看见。

答案 1 :(得分:1)

在完全创建DOM之前,您的脚本可能正在尝试访问对象。你确定你的功能是在jQuery ready函数内吗?

   $(document).ready(function() {
          // put all your jQuery goodness in here.

   });

答案 2 :(得分:0)

我明白了。在仅IE的css文件中使用了两个表达式。以下是一个例子:

#header-section {margin-top: expression((0 - (this.offsetHeight + document.getElementById("content-section").offsetHeight)) + "px");}

注释掉使用这些表达式的两个实例可以解决问题。不知道为什么会发生这种情况(我没有编写这样做的CSS所以我甚至不知道在那个CSS文件中查看)。

它不能与其他JS发生冲突,因为至少有2个地方正在使用,而根本没有其他JS被加载,但仍然发生了错误。也许由于某种原因无法找到ID(内容部分或标题部分)?不太确定......特别是因为行为如此不一致。嗯...

答案 3 :(得分:0)

感谢解决方案belugabob

我在第0行遇到了与Object相同的错误。 你在使用ie样式表的css中用表达式......?...:0修复了这个工作。

使用这种代码,移动导航/标题的原因是SEO相关。您希望您的内容位于顶部,而不太重要的SE智能导航位于其下方。