IE和Mozilla中的jquery.js中的错误,但不是chrome

时间:2011-10-27 13:07:16

标签: jquery

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)))

感谢贾斯汀表明道路......

3 个答案:

答案 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);
    }
}