使用Dojo在Firefox中出现NS_ERROR_UNEXPECTED错误

时间:2014-09-02 18:55:10

标签: javascript firefox dojo xmlhttprequest

在使用我的Dojo(v.1.10.0)应用程序时,我遇到了一个奇怪的问题。

以下是我在Firefox中看到的错误:

Exception 
    { message: "",
      result: 2147549183, 
      name: "NS_ERROR_UNEXPECTED", 
      filename: "http://localhost:8888/dojo/on.js", 
      lineNumber: 354, 
      columnNumber: 0, 
      inner: null, 
      data: null 
    } 
  ""

不幸的是,我不确定在我的应用程序中该怎么做。有人能指出我正确的方向吗?

在dojo / on的第354行,发生这种情况:

 if(has("dom-addeventlistener")){
    // emitter that works with native event handling
    on.emit = function(target, type, event){
        if(target.dispatchEvent && document.createEvent){
            // use the native event emitting mechanism if it is available on the target object
            // create a generic event               
            // we could create branch into the different types of event constructors, but 
            // that would be a lot of extra code, with little benefit that I can see, seems 
            // best to use the generic constructor and copy properties over, making it 
            // easy to have events look like the ones created with specific initializers
            var ownerDocument = target.ownerDocument || document;
            var nativeEvent = ownerDocument.createEvent("HTMLEvents");
            nativeEvent.initEvent(type, !!event.bubbles, !!event.cancelable);
            // and copy all our properties over
            for(var i in event){
                if(!(i in nativeEvent)){
                    nativeEvent[i] = event[i];
                }
            }
            return target.dispatchEvent(nativeEvent) && nativeEvent; // Line 354
        }
        return syntheticDispatch.apply(on, arguments); // emit for a non-node
    };
}

3 个答案:

答案 0 :(得分:2)

这是一个通用的FF错误消息......它通常由时间或竞争条件触发,这可以解释为什么它会通过dojo / on显示出来。也许您正在尝试使用的目标或事件处理程序正在处理已删除的内容等。如果不知道哪个事件触发它或者没有看到完整的代码示例,那么目前还不清楚。

例如,也许您在DOM可用之前尝试添加事件侦听器,但这只是猜测。或者目标节点可能不存在。

您可以使用调试器查看事件参数的值,也可以查看各种事件注册机制等。

答案 1 :(得分:0)

我们有一个类似的问题,使用实习2.0和单元测试创​​建本机选择框。

某些库代码(已验证它不是我们自己的代码)会触发dojo.emit(),从而导致内部错误。

我们正在尝试更详细地确定问题。如果您发现了什么,请告诉我们!

答案 2 :(得分:0)

我们也在同一点上得到了相同的异常,

对于我们来说,我们将代码elementReference.destroy() // destroy is a dojo function替换为elementReference.domNode.remove(),它解决了我们的问题。