Chrome拡張機能のコンテンツスクリプトを介して、次の方法でWebページに関数を挿入しようとしています。
function inject(code) {
var actualCode = '(' + code + ')();';
var script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
}
var myObj = person; // myObj/person is passed in from elsewhere
var fn = function() {
alert(myObj.name);
};
inject(fn); // myObj undefined
私の問題は、fnが関数式であるため、myObj.personNameを渡せないことです。だから私の質問は、変数を含む関数式をどのように構築できますか?代わりに、ある種の文字列連結を行いますか?
また、次のように、オブジェクトを関数に渡そうとしました。
function inject(code, myObj) {
var actualCode = '(' + code + ')(' + myObj +');';
...
しかし、これは機能せず、「UncaughtSyntaxError:Unexpectedidentifier」エラーが発生しました。