从Chrome扩展程序注入的脚本是否可以访问页面上的javascript(angularjs)?

时间:2016-01-08 05:09:36

标签: javascript jquery angularjs google-chrome google-chrome-extension

我正在尝试使用Google Chrome扩展程序作为我正在开发的网页的补充工具。

我使用script通过Google Chrome扩展程序在网络应用上注入了此chrome.tabs.executeScript

注入的脚本

<script>
    var angular = document.querySelector('body');
    var scope = angular.element(angular).scope();
    ...
</script> 

正确注入脚本。但是,在调用脚本时,我收到此错误Uncaught TypeError: angular.element is not a function。这基本上意味着脚本无法找到AngularJS依赖项(?)。

所以我的问题 - 从Chrome扩展程序中注入脚本是否可以访问页面上的javascript(AngularJS)?

如果是的话,我做错了什么? 如果不是,什么是一个好的替代解决方案?

1 个答案:

答案 0 :(得分:0)

您正在尝试重用在isolated scope中运行的页面脚本中的代码。

由于共享DOM,您可以通过在内容脚本中创建脚本标记来注入页面脚本。

<强>的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);

<强> background.js

chrome.browserAction.onClicked.addListener(function() {
    chrome.tabs.executeScript({ file: 'script.js' });
});