Chrome扩展程序:在页面上调用javascript函数,来自内容脚本

时间:2016-05-04 10:06:51

标签: google-chrome

我正在尝试在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

我希望这很清楚。

1 个答案:

答案 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>块,因为代码已经在该点执行,不再需要。