http://blog.5d.cn/js/blogdata.js
今天研究了一下上面这个文件,似乎此文件为每个博客页的数据异步读取脚本,包括blogcontent和sidebar,其中的getinfo(userpath)函数(148行)会载入sidebar的内容至页面中,通过阅读代码发现,脚本会先寻找id为sidebar的结点,然后将sidebar的相应内容插入,如果模板中没有id为sidebar的结点,则创建一个结点并将sidebar的内容创建为一个全新的结点且暂不插入到document中,同时,寻找id为sidebar子节点(如menu_c)的结点并将sidebar中对应的子内容“插入”其结点中,如果没有找到相应的id则不“插入”。此“插入”用的是innerHTML = innerHTML(164行起)。
我因此遇到了一个问题,在我的sidebar中有一个自动播放音乐的embed,id为sidebar_29_c,而模板中没有{sidebar},也没有id为sidebar或sidebar_29_c的结点。但我惊奇的发现网页打开后音乐还是会播放,并且用js遍历不到这个节点,因为创建好的结点没有插入document中。我又在模板中加入sidebar_29_c的id,但发现出现了两个embed,两首歌同时播放。我只能关掉插入document的那一个……
问题的关键在于不“插入”document的播放器依然在播放,而我无法通过脚本控制它。难道非要写id=sidebar的结点才可以控制它么?
p.s. 仅仅document.createElement的结点为什么会工作?太奇怪了……
各位大虾遇到这样的问题了吗?有何高见?
地址:http://blog.5d.cn/user10/jinjiang/Category/49016.html