我尝试获取 colorbox 的页面出现问题(一种 jQuery 的灯箱)工作。由于 FireFox (3.5.3) 中的 document.body
为 null
,它显然不起作用。在 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/