我正在尝试使用 Google Chrome 扩展程序作为我正在开发的网页的补充工具。
我使用 chrome.tabs.executeScript
通过 Google Chrome 扩展在网络应用程序上注入(inject)了此脚本
。
注入(inject)脚本
<script>
var angular = document.querySelector('body');
var scope = angular.element(angular).scope();
...
</script>
脚本已正确注入(inject)。但是,当调用脚本时,我收到此错误 Uncaught TypeError: angular.element is not a function
。这基本上意味着脚本找不到 AngularJS 依赖项(?)。
所以我的问题 - 从 Chrome 扩展程序注入(inject)的脚本是否可以访问页面上的 javascript (AngularJS)?
如果是的话,我做错了什么? 如果不是,什么是好的替代解决方案?
最佳答案
您正在尝试重用在 isolated scope 中运行的页面脚本中的代码。 .
由于 DOM 是共享的,您可以通过在内容脚本中创建脚本标记来注入(inject)页面脚本。
script.js
// define pageScript as a string or use xhr
// to load it from a separate file, i. e. page-script.js
var pageScript = `
var angular = document.querySelector('body');
var scope = angular.element(angular).scope();
//...`;
var scriptEl = document.createElement('script');
scriptEl.textContent = pageScript;
document.head.appendChild(scriptEl);
背景.js
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.executeScript({ file: 'script.js' });
});
关于javascript - 从 Chrome 扩展程序注入(inject)的脚本是否可以访问页面上的 javascript (angularjs)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34669903/