Javascript 组件返回故障代码:0x80070057(NS\U错误\U非法\U值)[nsIDOMEventTarget.dispatchEvent]
我对javascript非常陌生,请原谅我的无知 我目前正在使用SWFAddress为flex应用程序构建深度链接。问题是浏览器历史记录功能在IE9中不起作用 我想解决这个问题,而且似乎这不应该是一个困难的解决办法 在firefox中调试脚本时,我收到以下错误消息:Javascript 组件返回故障代码:0x80070057(NS\U错误\U非法\U值)[nsIDOMEventTarget.dispatchEvent],javascript,swfaddress,Javascript,Swfaddress,我对javascript非常陌生,请原谅我的无知 我目前正在使用SWFAddress为flex应用程序构建深度链接。问题是浏览器历史记录功能在IE9中不起作用 我想解决这个问题,而且似乎这不应该是一个困难的解决办法 在firefox中调试脚本时,我收到以下错误消息: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarget.dispatchEvent] this.dispatch
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个事件,但当涉及到分配更多事件时,它似乎失败了?在我看来,问题在于对
的引用:
this.dispatchEvent(new SWFAddressEvent(type));
此部分在事件处理程序中执行,因此这不是SWFAddress
,而是Window
我将其替换为SWFAddress.dispatchEvent(新的SWFAddressEvent(类型))代码>和修复它-悬停我不是一个JS专家
前三个事件的生成方式不同于创建NS\u ERROR\u非法\u VALUE的事件
几个月前,我已经停止使用swfaddress和flash开发富web应用程序,因此我无法评论此修复是否有效。不过,我会认为这个答案是正确的。如果将来有人会给出更好的答案,那么我会将其标记为正确:)