jquery - 为什么在 Firefox 中 document.body == null 而在 Safari 中却不然

标签 jquery firefox drupal-6 colorbox document-body

我尝试获取 colorbox 的页面出现问题(一种 jQuery 的灯箱)工作。由于 FireFox (3.5.3) 中的 document.bodynull,它显然不起作用。在 Safari (4.0.3) 中,颜色框工作时情况并非如此。

让我惊讶的是(我使用的是 Drupal 6)drupal 附加了一个 script 标签来在页面最底部、结束 body 和 html 标签下方设置一些 JavaScript 变量。否则我看不出有什么问题。不幸的是,我很难不这样做。难道是这个原因导致FF body 出现问题?

在 Firefox 中使用 colorbox 的示例文件确实有效(并且 document.body 在那里定义)。

有什么方法可以使用 jQuery 来用 $() 中的内容重新填充 document.body 属性,或者我应该继续敲击 drupal 不放html 标签之外的脚本标签(说起来容易做起来难)?

澄清一下,即使在页面加载完成后,document.body 仍为 null。这是 Firebug 控制台捕获:

>>> document.body
null
>>> $().attr('body')
null

最佳答案

通常原因document.body为 null 是因为您在 <body> 之前执行脚本遇到了标签(*)。如果没有看到代码,我不能肯定地说,但这是通常的原因。移动放置脚本的位置。

(*: 或浏览器知道不能出现在正文之外的其他元素,例如 <p>,在这种情况下,它会默默地添加 <body> 来修复丢失的标记。解析某些元素的差异通常在正文标签可能会解释为什么 Safari 允许你逃脱它。)

Could it be this that's causing FF to have issues with the body?

没有。它是损坏的标记,Drupal 不应该这样做,但关闭 </body>不停document.body引用正确的 DOM 节点。

Is there any way I could use jQuery to refill the document.body

不,document.body只是反射(reflect)与 document.getElementsByTagName('body')[0] 基本相同,所以尝试设置它是不明智的,如果你找不到 document.body 的主体,jQuery 将无法使用 $('body') 找到它。要么。

关于jquery - 为什么在 Firefox 中 document.body == null 而在 Safari 中却不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630969/

相关文章:

javascript - javascript 中的多个元素单击事件 - 就像 jQuery

firefox - 在 Firefox 扩展中调试 AngularJS Web 应用程序

JavaScript 代码适用于 chrome 和 IE,但不适用于 Firefox

javascript - Google map api3 不会在 Chrome 或 IE 中显示

drupal - 如何获取和设置增量值?

drupal - 在Drupal的某个页面添加JS文件

javascript - 要避免的 jQuery 陷阱

javascript - jQuery 检测空白区域

drupal - 将自定义模块创建的内容添加到 drupal 搜索索引中

c# - 在 C# MVC 中渲染部分 View 后触发 javascript 函数