1

私はjavascriptに非常に慣れていないので、私の無知を許してください。

現在、SWFAddress を使用してフレックス アプリケーションのディープリンクを構築しています。問題は、ブラウザの履歴機能が 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 つのイベントを適切にディスパッチできるのに、さらにイベントをディスパッチすると失敗したように見えるのはなぜですか?

4

1 に答える 1

0

問題はへの参照であるように私には思えますthis:

this.dispatchEvent(new SWFAddressEvent(type));

この部分はイベントハンドラで実行されるので、そうではありませSWFAddressWindow

私はそれを置き換えてSWFAddress.dispatchEvent(new SWFAddressEvent(type));修正しました-私はJSの専門家ではありません。

最初の 3 つのイベントは、 を作成する方法とは異なる方法で生成されますNS_ERROR_ILLEGAL_VALUE

于 2012-03-29T21:45:08.827 に答える