Firebug控制台抛出错误:
未捕获的异常:[异常......“无法转换JavaScript 参数arg 0 [nsIDOMViewCSS.getComputedStyle]“nsresult: “0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)”位置:“JS框架:: http://localhost:30326/Scripts/jquery-1.6.4.js :: anonymous :: line 6570“数据:否]
在IE中,错误出现在6570行中,如下所示:
if ((computedStyle = defaultView.getComputedStyle(elem, null))) {
错误是“没有这样的界面支持”
我完全不知道调试javascript或jquery ......
有没有人见过这个错误,任何想法为什么会发生这种情况......
的Tx ARNAB
编辑: 发现了别的东西。这是jquery方法..
if (document.defaultView && document.defaultView.getComputedStyle) {
getComputedStyle = function (elem, name) {
var ret, defaultView, computedStyle;
name = name.replace(rupper, "-$1").toLowerCase();
if (!(defaultView = elem.ownerDocument.defaultView))
{ return undefined;
}
if ((computedStyle = defaultView.getComputedStyle(elem, null))) {
// [这是错误被抛出的地方elem值是“”]
ret = computedStyle.getPropertyValue(name);
// **[The value of name is opacity]**
if (ret === "" && !jQuery.contains(elem.ownerDocument.documentElement, elem)) {
ret = jQuery.style(elem, name);
}
}
return ret;
};
}
但是我无法找到我的哪个方法,调用jquery中的这个方法,任何人都知道如何找到在页面中触发js脚本的顺序
解决方案:
if (elem.wholeText == " " && name == "opacity") {
return "1";
}
if ((computedStyle = defaultView.getComputedStyle(elem, null)))
基本上在行上方添加了一个代码 if((computedStyle = defaultView.getComputedStyle(elem,null)))
感谢贾斯汀表明道路......
答案 0 :(得分:5)
IE9抛出"没有支持这样的界面"在没有样式的DOM节点上运行getComputedStyle时(例如文本节点)。走DOM时遇到了这个问题。因此,在将元素传递给getComputedStyle之前,请检查它的节点类型,如下所示:
if (elem.nodeType === elem.ELEMENT_NODE) {
document.defaultView.getComputedStyle(elem, null);
}
答案 1 :(得分:0)
你是否有可能试图从隐藏元素中获得一些偏移或位置?看起来这种错误可能有一些先例:
http://bugs.jquery.com/ticket/2528
如果是这种情况,可以采用以下方法:
http://siderite.blogspot.com/2009/07/jquery-firexof-error-could-not-convert.html
如上所述,获取您尝试使用的代码示例非常有用。
快乐的编码!
答案 2 :(得分:0)
我使用highcharts工具提示遇到了这个问题。他们从jquery 1.9.1:
中扼杀了这段代码if ( window.getComputedStyle ) {
getStyles = function( elem ) {
return window.getComputedStyle( elem, null);
}
...
它通过添加对定义的nodeType的检查来停止抛出错误,因为我注意到它在highcharts中使用的svgElement为null。
getStyles = function( elem ) {
if ( elem && elem.nodeType ) {
return window.getComputedStyle (elem, null);
}
}