0

提案された応答を確認した後、次の問題を解決できませんでした。

私のJavaScriptはページDOMにアクセスしていませんが、実行されています。

Manifest.json

{
  "name": "Clicky",
  "version": "1.0",
  "background": { "scripts": ["jquery.js", "clickclickboom.js"] },
  "permissions": [
    "tabs", "http://*/*"
  ],
  "browser_action": {
  "name": "Find all links",
  "icons": ["icon.jpg"]
  },
  "manifest_version": 2
}

clickclickboom.js

alert("script runs");
function clicky() {
    alert ("clicky got called");
    jQuery(".testClass").find("a");
}
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(
    null, {code: clicky()});
});

両方のアラートがポップアップしますが、デバッグすると、拡張機能がbackground.html DOMにアクセスしているのがわかりますが、ターゲットページのDOMにはアクセスしていません。

どんな助けでも大歓迎です、よろしくお願いします!

4

1 に答える 1

0

ではchrome.tabs.executeScript()codeプロパティはコードを含む文字列である必要があります。

あなたのコードで現在起こっていることは次のとおりです:clicky()が実行され、 が返されますundefined。これは基本的に、executeScript を操作なしの呼び出しにしています...

あなたができることの1つは使用することですがclicky.toString()、個人的にはお勧めしません! この場合、alert ("clicky got called")うまくいくかもしれません (運が良ければ)。コンテンツ スクリプトで jQuery が定義されていないため、次の行は機能しません。jquery の組み込みは、バックグラウンド ページに限定されます。

あなたのコードから、Chrome 拡張機能のアーキテクチャにあまり慣れていないようです。そのため、http://code.google.com/chrome/extensions/getstarted.htmlから始めることをお勧めします。

于 2012-07-05T14:14:35.297 に答える