2016-10-12 15 views
3

私はこのトピックを調査しましたが、何かはクリックしていません。私は簡単なChrome拡張機能を作成しようとしています。詳細は重要ではありませんが、ユーザーが特定のWebサイト上の特定のボタンをクリックすると、ページは別のURLにリダイレクトされます。私は単に説明のためにダミーのURLを入れました。ここに私のコードは次のとおりです。Chrome拡張機能のコンテンツスクリプトを挿入しようとしていません

manifest.jsonを

{ 
    "manifest_version": 2, 
    "name": "Blah", 
    "version": "1.0", 
    "description": "Blah blah", 
    "icons": { "16": "icon16.png", 
      "48": "icon48.png", 
      "128": "icon128.png" }, 
    "content_scripts": [ 
     { 
     "matches": ["*://url1.com/*"], 
     "js": ["contentscript.js"] 
     } 
    ], 
    "web_accessible_resources": ["script.js"] 
} 

contentscript.js(別のスタックオーバーフローの質問でこれを見つけ、ないそれがどのように動作するか全くわから)

var s = document.createElement("script"); 
s.src = chrome.extension.getURL("script.js"); 
s.onload = function() { 
    this.remove(); 
}; 
(document.head || document.documentElement).appendChild(s); 

script.js

document.getElementById("id1").addEventListener("click", redirect); 
function redirect() { 
    console.log("Testing!"); // This works! 
    window.location.replace("url2.org"); 
} 

適切なボタンをクリックすると、テキストがコンソールに記録されるため、私はsom何か正しい。しかし、私は実際にスクリプトをページに挿入していないと推測しています。そのため私のページはリダイレクトされません。どんな助けもありがとう!ここで

+1

スクリプトが注入されなかった場合は、あなたはコンソールログを取得しません。だから何か問題がある。 – Xan

+1

また、ページレベルの注入をまったく使用する必要はありません。あなたの 'script.js'コードを' contentscript.js'に入れるだけです。ページレベルの注入は、ここでは不要な[コンテキスト分離](https://developer.chrome.com/extensions/content_scripts#execution-environment)をバイパスするためにのみ必要です。 – Xan

答えて

0

は一例です:

script.js

// wait that page finished loading 
window.addEventListener("load", function load(event){ 
// for the current tab, inject the "inject.js" file & execute it 
    chrome.tabs.executeScript(tab.ib, { 
     file: 'inject.js' 
    }); 
},false); 

inject.js

// this is the code which will be injected into a given page... 

document.getElementById("id1").addEventListener("click", redirect); 
function redirect() { 
    console.log("Testing!"); // This works! 
    window.location.replace("url2.org"); 
} 

manifest.jsonを

{ 
    "name": "Inject", 
    "version": "0.0.1", 
    "manifest_version": 2, 
    "description": "Injecting stuff", 
    "content_scripts": [{ 
     "matches": ["http://example.com/*"], 
     "js": ["script.js"] 
    }], 
    "permissions": [ 
    "http://example.com/*", 
    "tabs" 
    ] 
} 
+1

しかし、私は、コードを挿入するために拡張アイコンをクリックする必要はありません。コードを自動的に挿入したいので、ユーザーが適切なハイパーリンクをクリックすると、そのページは別のURLにリダイレクトされます。 – lizcoder

+0

私の回答が更新されました – Fralec

+0

更新していただきありがとうございますが、コードは私のためには機能しません...今はコンソールに何も印刷されません。 – lizcoder

関連する問題