2

Chrome拡張機能について学び、HelloWorldアプリをいくつか作成しています。ここではコンテンツスクリプトに取り組んでいます。

まず、私のアプリは非常にシンプルで、コンテンツスクリプトをロードするマニフェストにすぎません。

これはマニフェストです

{
  "name": "turn all th into TH",
  "version": "1.0",
  "permissions": [
    "http://*/*"
  ],
  "manifest_version": 2,

 "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["contentScriptFirstApp.js"]
    }
  ]
}

そしてcontentscriptはたった1行です

alert('hello');

これを実行すると、ページが読み込まれるたびにアラートボックスが表示されます。

ただし、奇妙なことに、コードは実行されていますが、開発ツールでContentScriptが見つかりません。

マニフェストをわずかに調整し、matchesパラメータを変更して、許可する代わりに、以下のようにhttpファイルとのみ一致するようにした場合にのみ、開発者ツールでコンテンツスクリプトを確認できます。

{
  "name": "turn all th into TH",
  "version": "1.0",
  "permissions": [
    "http://*/*"
  ],
  "manifest_version": 2,

 "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["contentScriptFirstApp.js"]
    }
  ]
}

なぜこれなのか興味があります。どちらの場合も、コードは実行されてアラートボックスが表示されますが、コンテンツスクリプトページの「matches」パラメータがhttpページとしてのみ設定されている場合にのみ、開発者ツールに表示されるのはなぜですか。

4

1 に答える 1

1

これは単なる偶然であり、拡張機能を最初にロードするときによく見られる不具合であることは間違いありません。

"<all_urls>"マニフェストを使用すると、開発ツールの [ソース] タブでcontentScriptFirstApp.js問題なく表示されます。コンテンツ スクリプト コンテキストに問題なく切り替えることができます。

しかし、最初にディスクから拡張機能をインストールするときに、最初のタブの開発ツールがそれを常に認識しているとは限らないようです。私と他の人はこの問題を見てきましたが、オンデマンドで問題を再現する信頼できる方法を見つけていません。

原因が何であれ、そのタブを閉じて新しいタブを開くと、常に修正されます(これまでのところ)。そのため、マニフェストを変更したときに、その拡張機能が偶然にも開発ツールに表示されるまでには十分な時間があったのでしょう。私が言ったように、設定に関係なく、マニフェストが機能し、拡張機能が表示されmatchesます。

于 2013-03-03T11:45:10.113 に答える