【问题标题】:Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent]组件返回失败代码:0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent]
【发布时间】:2011-10-19 11:08:56
【问题描述】:

我对javascript很陌生,所以请原谅我的无知。

我目前正在使用 SWFAddress 为 flex 应用程序构建深度链接。问题是浏览器历史记录功能在 IE9 中不起作用。

我想解决这个问题,而且看起来应该不难解决。

当我在 firefox 中调试脚本时,我收到以下错误消息:

Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent]
this.dispatchEvent(new SWFAddressEvent(type)); 

这表明这段代码是罪魁祸首:

_dispatch = function(type) {
            this.dispatchEvent(new SWFAddressEvent(type));
            type = type.substr(0, 1).toUpperCase() + type.substr(1);
            if(typeof this['on' + type] == FUNCTION)
                this['on' + type]();
        },

我已检查并确认 SWFAddressEvent 对象已正确实例化,没有任何问题。

问题似乎出在这里:

this.dispatchEvent = function(event) {
    console.log(event);
        if (this.hasEventListener(event.type)) {
        console.log(event);
            event.target = this;
            for (var i = 0, l; l = _listeners[event.type][i]; i++)
                l(event);
            return TRUE;           
        }
        return FALSE;
    };

似乎由于某种原因,dispatchEvent 没有收到创建的 SWFAddressEvent

有人可以解释该错误消息的含义吗?还有为什么页面第一次加载的时候,可以正常调度3个事件,但是再调度更多的事件,就好像失败了?

【问题讨论】:

    标签: javascript swfaddress


    【解决方案1】:

    在我看来,问题在于对this的引用:

    this.dispatchEvent(new SWFAddressEvent(type));
    

    这部分在事件处理程序中执行,所以这不是SWFAddress,而是Window

    我将其替换为 SWFAddress.dispatchEvent(new SWFAddressEvent(type)); 并修复了它 - hover 我不是 JS 专家。

    前三个事件的生成方式与创建NS_ERROR_ILLEGAL_VALUE 的方式不同。

    【讨论】:

    • 几个月前我已经停止使用 swfaddress 和 flash 来开发富 Web 应用程序,因此我无法评论此修复是否有效。但是,我会将这个答案标记为正确。如果将来有人提出更好的答案,那么我会将其标记为正确:)
    猜你喜欢
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2018-06-07
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多