让其他人看到此错误消息。谷歌的快速检查并没有给我带来太多帮助。
答案 0 :(得分:2)
你可能正在尝试这样做......
alert($("#myElement").tagName);
你应该这样做......
alert($("#myElement")[0].tagName);
答案 1 :(得分:1)
确保在页面呈现后运行脚本。如果您的脚本位于页面顶部并立即运行,并且您的DIV低于该脚本,则DIV尚不存在。
答案 2 :(得分:1)
如果你只是在IE中看到它,它可能是DivX网络插件的错误:
http://drupal.org/node/1038058
问题在DivX网站上得到确认,该网站上写着“在下一版本中已修复”(2011年4月)。
http://labs.divx.com/node/16824
基本上,错误是DivX用一个试图小写标记名的拦截替换了el.appendChild()函数,但是不打算检查它是否是文本节点。如果您尝试执行$('body').append('hi!')
之类的操作,这将破坏jQuery。此外,它无法返回破坏SWFObject的元素。
解决方法是确保永远不要使用文本节点或多个顶级元素调用append()。如果您要附加一系列项目:
append($('<div>hi</div><div>there</div>'))
确保将它们包装在顶级div中以避免隐含的文本节点:
append($('<div><div>hi</div><div>there</div></div>'))
以下是appendChild
被破坏的完整解决方法,同样的方法可用于共享该错误的insertBefore
和replaceChild
。在加载页面后的某个时间插入Divx JS,因此您可能需要轮询此内容。
window.fixDivxPlayerBug = function () {
var b = document.getElementsByTagName('body')[0];
if ( window['ReplaceVideoElements'] && ! b.appendChildDivx ){
b.appendChildDivx = b.appendChild;
b.appendChild = function (el) {
if( el.tagName == null) {
var wrap = document.createElement('div');
wrap.appendChild(el);
b.appendChildDivx(wrap);
}
else {
b.appendChildDivx(el);
}
return el;
};
}
};
答案 3 :(得分:0)
感谢所有人阅读这个问题并回复。