javascript – 如何在页面中注入的函数表达式中使用变量?
作者:互联网
我正在尝试通过Chrome扩展内容脚本将功能注入网页:
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 +');';
...
但这不起作用,并导致“Uncaught SyntaxError:Unexpected identifier”错误.
相关:Insert code into the page context using a content script
解决方法:
你的方法几乎是正确的.问题是以下几点
var code = '(' + func + ')(' + myObj + ');' // results in
var code = '(function(){})([object Object])'
要解决这个问题,只需使用JSON.stringify
:
var code = '(' + func + ')(' + JSON.stringify(myObj) + ');';
标签:content-script,javascript,google-chrome-extension 来源: https://codeday.me/bug/20190901/1783467.html