2016-09-21 4 views
1

検索フォームを使用してpopup.htmlを持つChrome拡張機能を構築しています。 TravelocityやKayakと同様に、フォームにはチェックボックスが付いているため、ユーザーは照会するサイトを選択できます。Chrome拡張機能 - 同時に複数の新しいタブでexecuteScriptを実行する

送信時に、popup.jsは、選択したチェックボックスに基づいて複数の新しいタブを起動します。新しい新しいタブごとにtabs.create()コールバックでexecuteScriptを使用します。 - (A)新しいページのそれぞれの検索フォームにユーザーのクエリを挿入し、(B)そのページに検索フォームを送信します。

複数の新しいタブが同時に作成された場合、executeScriptが一貫して実行されていないように見えるので、1つのチェックボックスをオンにするとコードが機能します(新しいタブが起動されます)。ときどき動作し、時には動作しないことがあります。

これは、スクリプト実行のタイミングに何らかの問題があると信じていますが、わかりません。

あなたは何が起こっているのか分かっていれば、私はあなたのアドバイスを聞いてほしいです。

また、この種の問題を今後どのようにデバッグするかについては、何か情報をお寄せいただきありがとうございます。

ここではgithubの上の私のコードだ...

  • 全体レポ:
  • popup.html
  • popup.js(最も関連性の高いファイル)
https://github.com/rossmorey/SongSearch
  • manifest.jsonを

    多くの感謝!

  • +0

    申し訳ありませんが、私はデバッグに関するより具体的な質問をする必要があります - 私はdevtoolsに精通していますが、この場合、開かれたばかりのタブにブレークポイントを追加する方法が見つかりませんでした。 executeScriptによって挿入されたコードをどのようにデバッグできますか?また、検索パラメータ付きの直接URLも記述します。私が照会しているサイトのうちの2つに、これをサポートするURL構造がありません。可能であれば直接URLを使用していることが私のコードでわかると思います。ご協力いただきありがとうございます! :) – rossmorey

    答えて

    2

    複数のタブを開くと、popup.htmlのフォーカスが失われて閉じられるので、コードを挿入するtabs.createコールバックでは実行されません。

    chrome.tabs.create({url: stringToObj[org], active:false} ... 
    

    私はそれはあなたを助けると思う:このように、オプション:

    は「偽アクティブ」でタブを作成してください。

    も... それはあなたのSeSac注入コードにバグがあります:ポップアップウィンドウで定義された検索タイプは、ブロックしていない場合

    input[value="undefined"] 
    

    が見つかりましたので、プロパティが呼び出されます「確認」されることはありません"undefined"に設定すると、スクリプトの実行を停止します。

    +0

    華麗な - ありがとう!それはまさに問題の原因です! 「未定義」の検索タイプの問題に関して、入力の検証は実装する次の機能です。再度、感謝します。 :) – rossmorey

    +0

    よろしくお願いします!がんばろう! :) – MobDev

    関連する問題