编程语言
首页 > 编程语言> > javascript – 如何在页面中注入的函数表达式中使用变量?

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