0

我正在处理的网站显示间歇性运行时错误,但仅在 IE7 和 8 中出现。此错误几乎是随机出现的(例如,它可能会在初始页面加载时弹出一次,或者直到第 n 个页面加载时才会弹出)。错误说它发生在第 0 行,错误是“需要对象”。我在整个站点中都使用 jQuery,但禁用它(即各种插件和诸如此类的东西)并没有解决问题。我仍在努力,但想得到这个“帮助!” 如果有人以前处理过类似的事情,请退出 stackoverflow。

它的间歇性是真正让我大吃一惊的地方。

4

4 回答 4

3

根据您的回答,我猜想 id 为“header-section”的元素位于页面顶部,并且偶尔会在页面的其余部分加载之前应用 css 规则。这意味着表达式尝试在该元素存在之前评估“内容部分”的 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");}

让我知道你是怎么办的。

PS我不知道规则试图实现什么 - 我用我认为相同的布局模拟了一个页面,它所做的只是将很多内容移出页面顶部,以某种方式防止它被看到。

于 2009-09-18T07:29:49.020 回答
1

似乎您的脚本可能会在 DOM 完全创建之前尝试访问对象。你确定你的函数在 jQuery 就绪函数中吗?

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

   });
于 2009-09-18T03:25:01.690 回答
0

我想到了。仅 IE 的 css 文件中使用了两个表达式。这是一个例子:

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

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

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

于 2009-09-18T05:30:51.443 回答
0

感谢您的解决方案

我在第 0 行上遇到了与 Object required 相同的错误。您对 ie 样式表的 css 中的表达式 ...?...:0 的修复完成了这项工作。

使用这种代码的原因,将导航/标题向上移动,与 SEO 相关。您希望您的内容在顶部,而在其下方不太重要的 SE 明智导航。

于 2009-12-23T15:11:59.617 回答