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