2017-04-16 7 views
2

クロム拡張を作成しようとしています。この分野での最小限の経験私はInsert code into the page context using a content scriptの後に、最初のメソッドを使ってjsコードをページに挿入しました。クロム拡張のjavascriptアラートを無効にする

私はオーバーレイの機能を破壊しているアラートに大いに依存している他の人のコードよりもjsフレームワークを構築しようとしています。ちょっと沈黙させたいだけですメッセージをconsole.logに入れますが、私はこの段階で何を得ることができます。だから私は最終的なjsファイル(nogo.js)を注入するためにJavaScript: Overriding alert()を設定しようとしました。

nogo.jsが注入されますが、アラートを抑制する効果はないようです。それは、他のhtmlファイル自体が、注入が遅すぎたり、順不同で起こっている別のjsファイルによって開始されている可能性がありますか?

manifest.jsonを

"content_scripts": [ 
     { 
      "matches": ["*://URL/*"], 
      "js": ["myscript.js"], 
      "run_at": "document_end", 
      "all_frames": true 
     }, 
     { 
      "matches": ["*://URL/*"], 
      "js": ["noalerts.js"], 
      "run_at": "document_start", 
      "all_frames": true 
     } 

     ], 
     "web_accessible_resources": ["script.js","nogo.js"] 

    } 

myscript.js

var s = document.createElement('script'); 
// TODO: add "script.js" to web_accessible_resources in manifest.json 
s.src = chrome.extension.getURL('script.js'); 
s.onload = function() { 
    this.remove(); 
}; 
(document.head || document.documentElement).appendChild(s); 

noalerts.js

var n = document.createElement('script'); 
// TODO: add "script.js" to web_accessible_resources in manifest.json 
n.src = chrome.extension.getURL('nogo.js'); 
n.onload = function() { 
    this.remove(); 
}; 
(document.head || document.documentElement).appendChild(n); 

nogo.js

window.alert = null; 
+0

チップのおかげで、私はnogo.jsを注入することができましたが、残念ながらコードは警告ウィンドウを妨げていません。 – CursingLoudlyintheOffice

+0

ここ:https://stackoverflow.com/q/12095924/632951 – Pacerier

答えて

2

はそれを上書きする行を貼り付け、alertは何もしないようにするには:

var s = document.createElement('script'); 
s.innerHTML = "alert = function(){}" 
document.body.appendChild(s); 

関数が再宣言され、あなたが身体機能と。私は私の拡張で同様のことをしなければならなかった。

var s = document.createElement('script'); 
s.innerHTML = "confirm= function(){return true;}" 
document.body.appendChild(s); 

最も簡単な例のために使用することができる...例えば、他の誰もがなど、ページ上の何かを行います。あなたはconfirm機能が「はい」毎回言うことができます類推

Notice:コンソールにコードを貼り付けて、alertを呼び出すことで、この方法を試すことができます。 Notice 2は、スクリプトとコンテンツスクリプトの間で共有されたドキュメントであるため、コンテンツスクリプトで実行することができます。

関連する問題