15

マニフェストの条件に一致するページを読み込んだときにのみ実行されることを除いて、期待どおりに機能する Chrome 拡張機能を作成しました。拡張機能のアイコンをクリックして何時間も実行しようとしましたが、役に立ちませんでした。

私が望むものに最も近いのは、拡張アイコンをクリックしてコードを実行できるようにしたことですが、ロードされたページでは実行されません。ページ DOM ではなく、拡張機能のスペースで実行されます。

現在の状態では、指定したドメインのページが開いたときにのみコードが実行されます。そのルールに一致する場合にのみ実行したいのですが、拡張アイコンをクリックした場合にのみ実行します。

これが私のコードです: manifest.json



    {
        "name": "Get Response URL",
        "version": "1.0",
        "manifest_version": 2,
        "browser_action": {
        "default_icon": "mkto_icon.png",
        "name": "Click to get URL"
        },
        "content_scripts": [{
            "js": ["contentscript.js"],
            "matches": ["http://mydomain.com/*"]
        }]
    }

contentscript.js



    if (document.getElementsByName("returnURL")){
        alert("\nThe Response URL on this form is:\n\n" + document.getElementsByName("returnURL")[0].value);
    }

4

2 に答える 2

41

私が見るように、いつコードを実行したいですか

  • ユーザーがブラウザ アクション アイコンをクリックし、
  • URL パターンが一致しています

その場合は、タブ API と組み合わせてバックグラウンド ページを使用しています。

デモンストレーション

これはユース ケースのサンプル デモンストレーションです。すべてのコードを配置し、一致するすべての URL にアクセス許可を割り当てることができます。

マニフェスト.json

登録された背景ページ、ブラウザ アクション、およびターゲット ページの権限。

{
        "name": "Get Response URL",
        "version": "1.0",
        "manifest_version": 2,
        "browser_action": {
        "name": "Click to get URL"
        },
        "background":{
            "scripts":["background.js"]
        },
        "permissions":["https://www.google.co.in/*"] //Put All your URL here
 }

background.js

すべてのターゲット マッチング URL を一連の if 条件にここに入れます

chrome.browserAction.onClicked.addListener(function (tab) { //Fired when User Clicks ICON
    if (tab.url.indexOf("https://www.google.co.in/") != -1) { // Inspect whether the place where user clicked matches with our list of URL
        chrome.tabs.executeScript(tab.id, {
            "file": "contentscript.js"
        }, function () { // Execute your code
            console.log("Script Executed .. "); // Notification on Completion
        });
    }
});

contentscript.js

alert("Code Executed ... ");

出力

https://www.google.co.in/を参照し、ブラウザ アクションをクリックすると、ページにアラートが表示されます。

参考文献

于 2013-03-01T06:26:57.090 に答える
1

browserAction API を使用します。こちらを参照してください

onClick イベントが役立つ場合があります。グーグルからのこれらの例も参照してください:

于 2013-03-01T03:29:17.570 に答える