あなたは試すことができます...
function evalMe(code){
var script = document.createElement('script');
script.innerText = code;
document.querySelector('head').appendChild(script);
}
彼らがそれを無効にしない限り、これは同じ効果を生み出すはずですが、私の知る限り、これは問題ありません. もちろん、スクリプトの場合、たとえばtoerrors
のラッピングを行わない限り、それについて聞くことはありませんstring
eval
function myHandler(err){
// handle errors.
}
function evalMe(code){
var script = document.createElement('script');
var wrapper = '(function(){ try{ @@ }catch(err){ myHandler(err); } })()';
// Make sure the string has an ending semicolon
code = code[code.length-1] === ';' ? code : code + ';';
script.innerText = wrapper.replace('@@', code);
document.querySelector('head').appendChild(script);
}
または、公式のメカニズムを使用することもできます
http://developer.chrome.com/beta/extensions/tabs.html#method-executeScript
ただし、これにはバックグラウンド ページが必要であり、ページとバックグラウンド ページの間でメッセージ パッシングを使用する必要がありapp
ます。
更新:作業方法
iframeeval
と、base64
拡張dataURI
ページと<iframe>
. github でコードの作業コピーを取得できます。使用するには、単にレポをクローンまたはダウンロードし、「クライアント」dir
をパッケージ化されていない拡張機能として chrome 拡張機能マネージャーにインストールします。プラグインを駆動するコードは次の場所にありますapp.js
iframeEval を使用してテストします。エラー通知は少しバグがありますが、eval
動作します。
@appsillers コードを追加せずにプラグインを機能させるには、eval
拡張機能window
のiframeEval
メソッドをコード内のメソッドで上書きできます。