【问题标题】:document.body is nulldocument.body 为空
【发布时间】:2010-03-02 14:05:52
【问题描述】:

我有一个使用 Mootools 1.2.4 和 MediaboxAdvanced 作为灯箱的页面。由于特定的 javascript 错误,我似乎无法正常工作

document.body 为空

在Mediabox初始化时:

$(document.body).adopt(
     $$([
          overlay = new Element("div", {id: "mbOverlay"}).addEvent("click", close),
          center = new Element("div", {id: "mbCenter"})
     ]).setStyle("display", "none")
); 

页面是here。如果你点击这个人的名字、图片或右下角的更多信息按钮,它应该会启动 Mediabox。通过 Firebug,我确认 CSS 正在加载,mootools 正在加载,Mediabox 脚本正在加载;所有图像的路径和一切都是正确的。

有什么想法吗?

【问题讨论】:

  • 对不起我的错误答案:-)我已经删除了。
  • 我没有收到那个错误。不过,我还有另外两个:unterminated parenthetical in mootools.js (line 67)Accordion is not defined in mootools-accordion.js (line 7)
  • 相同 - 您需要加载 mootools-more(从 mootools.net/more 获取),启用 FX.accordion,它会自动启用您需要的依赖项。
  • 不错!谢谢!就像你说的那样清除了那个错误!

标签: javascript mootools mootools1.2


【解决方案1】:

您可能只能对从 getElementById 返回的元素使用 $。一个简单的解决方法是改用 $$。

$$('body')[0].adopt...

【讨论】:

  • 还请记住,它不起作用的原因在于您的 common.js:function $(id) { return document.getElementById(id);} - 当 mootools 发现 $ 已定义时,它会进入兼容模式并引用 document.id作为 $ 的别名。您可以通过 mootools 将 $ 调用包装在 anon 函数中,如下所示:(function($) { ... do stuff using $ })(document.id); 或者您可以从 common.js 中删除该函数,因为 mootools 将复制效果。
  • 明白。我不会弄乱它,因为此时它似乎很稳定。您的帮助真的非常宝贵。
猜你喜欢
  • 2015-03-06
  • 2010-12-08
  • 2012-04-12
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 2012-10-08
相关资源
最近更新 更多