2012-09-19 15 views
7

コンテンツスクリプトがbackground.jsにメッセージを送信します。レスポンスのコールバックハンドラでは、最後の行は"alert(alrt_msg)"です。コードを実行すると、私は警告ボックスを取得しますが、「OK」をクリックした後、赤で次クロームコンソールショー:コンソールでChrome拡張機能のスローエラーが発生しました

Error in event handler for 'undefined': Cannot call method 'disconnect' of null TypeError: Cannot call method 'disconnect' of null 
    at chromeHidden.Port.sendMessageImpl (miscellaneous_bindings:285:14) 
    at chrome.Event.dispatch (event_bindings:237:41) 
    at Object.chromeHidden.Port.dispatchOnMessage (miscellaneous_bindings:250:22) 

有益そのあまりありませんが、直感的に、私はいくつかの構造がどこかゴミであるため、このエラーがあることを知っていましたユーザーが「OK」をクリックしている間に収集されます。だから私は、これはそれが上記のエラーなしで働かせた

window.setTimeout(function() { alert(alrt_msg); } , 1);

として私のコードを置きます。それでも、ドキュメントやGoogleを検索した後、私はこれの背後にある正確な理由を見つけることができませんでした。誰かが何が起こっているのかを説明してください。

+0

コードは何ですか? 'onMessage'イベントリスナの最後に' return true; 'を挿入するとどうなりますか? –

+3

私は、メッセージの応答のハンドラが警告がクリックされるのを待たずにいると考えています。したがって、アラートを閉じてスクリプトを続行すると、ハンドラはもう存在しません。これがバグとみなせるかどうかはわかりません。 – Goodwine

+0

@Goodwine、私はあなたが正しいと信じています。 – Methos

答えて

2

私は同じ問題に遭遇しました。これは、応答ハンドラで呼び出される関数内のエラー(私のコードの失敗)が原因です。ここで

は私のコードです:background.jsで

- 送信側のリスニング側

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
    var update_msg = 'test'; 
    sendResponse({data: update_msg}); 
    return false; // -> Add this or not add this do not matter 
    }); 
} 

function updateObjDatabase(obj) { 
    chrome.runtime.sendMessage({data: obj}, function(response) { 
    // Update when it's done 
    update_msg_handler(response.data); 
    }); 
} 

function update_msg_handler(msg) { 
    ..... error code here 
} 

間違ったコードが機能update_msg_handlerに実際にあります。しかし、Chromeのコンソールだけではその詳細を教えてくれません。 IDEを持っていない場合、デバッグするためにconsole.logをいくつか追加する必要があります。

+0

私は多かれ少なかれ同じ問題を抱えていました。だからええ、あなたのコードに誤りがないかどうかチェックしてください –

+11

あなたはここで何も説明しませんでした。コード内でこのエラーが発生する原因は何ですか? –

1

私は同じエラーがありました。それはiMacrosアプリでした。私はそれを削除した後、エラーはありません。

関連する問題