我正在尝试在Chrome扩展程序的内容脚本中调用浏览器页面上存在的javascript函数。这可能吗?
例如,函数" findCustomer()"可在页面上找到。目前,如果我在浏览器控制台中运行findCustomer(" XXXXXXX"),它将成功返回客户的名称。我如何能够从内容脚本运行此脚本?
我在内容脚本中有这样的代码:
var customerId = "1234567";
alert(customerId); // This will display the customer ID on an alert
var customerName = findCustomer(customerId); // This is a javascript function on the page
我希望这很清楚。
答案 0 :(得分:1)
内容脚本在称为孤立世界的特殊环境中执行。他们可以访问注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。 https://developer.chrome.com/extensions/content_scripts#execution-environment
您需要做的是在页面中注入<script>
块,例如:
var injectedCode = '(' + function() {
var customerId = "1234567";
alert(customerId);
var customerName = findCustomer(customerId);
} + ')();';
var script = document.createElement('script');
script.textContent = injectedCode;
(document.head || document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
注意:之后删除<script>
块,因为代码已经在该点执行,不再需要。