2

何らかの理由で、Chrome 拡張機能で getElementsByTagName を使用しようとすると、空のリストが表示されます。例えば:

background.js

document.body.onload = function(){
    chrome.browserAction.onClicked.addListener(function(tab) {
        alert(document.getElementsByTagName("div").length);
    });
};

私に「0」を警告します。さらに、addListener関数内で を作成してdivに追加するとbody、長さは「1」になります。拡張機能は、拡張機能がクリックされた後に作成されたオブジェクトのみを検出するようです...何かアイデアはありますか?

PSここに私のマニフェストファイルがあります

マニフェスト.json

{
  "name": "tester",
  "version": "1.0",
  "manifest_version": 2,
  "background": {
      "scripts": ["background.js"],
      "persistent": false
  }
}
4

2 に答える 2

2

background.jsスクリプトは、バックグラウンド ページ コンテキスト内で実行されます。ここでは、バックグラウンド スクリプトのみを宣言しているため、バックグラウンド ページが生成されますが、コンテンツはありません。

Inspect views: _generated_background_page.htmlchrome://extensions/ に移動し、拡張機能の横にあるリンクをクリックすると、生成された背景ページを表示できます。次のようになります。

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <script src="background.js"></script>
  </body>
</html>

ご覧のとおり、<div>要素がないため、document.getElementsByTagName("div").length0 が返されます。

Web ページのコンテンツを取得する場合は、コンテンツ スクリプトを使用する必要があります。

于 2013-10-18T12:50:18.250 に答える