有没有其他人看到这个错误信息。用谷歌快速检查并没有告诉我太多。
4 回答
你可能正在尝试做这样的事情......
alert($("#myElement").tagName);
你应该做这个...
alert($("#myElement")[0].tagName);
确保在页面呈现后运行脚本。如果您的脚本位于页面顶部并立即运行,并且您的 DIV 在该脚本下方,则 DIV 尚不存在。
如果您只在 IE 中看到它,则可能是 DivX 网络插件的错误:
http://drupal.org/node/1038058
DivX 网站上已确认问题,该网站显示“已在下一版本中修复”(2011 年 4 月)。
http://labs.divx.com/node/16824
本质上,该错误是 DivX 将 el.appendChild() 函数替换为一个拦截器,该拦截器试图将标记名小写,但不会检查它是否是一个文本节点。如果您尝试执行类似$('body').append('hi!')
. 此外,它无法返回一个破坏 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;
};
}
};
抱歉,就我而言,这是一个半途而废的问题。我现在正在浏览我的 .js 文件并消除整个代码块。我已将其隔离到一个特定的 .js 文件中。
非常感谢您阅读此问题并回复。