Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Chrome扩展注入的脚本是否可以访问页面上的javascript(angularjs)?_Javascript_Jquery_Angularjs_Google Chrome_Google Chrome Extension - Fatal编程技术网

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

从Chrome扩展注入的脚本是否可以访问页面上的javascript(angularjs)?,javascript,jquery,angularjs,google-chrome,google-chrome-extension,Javascript,Jquery,Angularjs,Google Chrome,Google Chrome Extension,我正在尝试使用谷歌浏览器扩展作为我正在开发的网页的补充工具 我使用Chrome.tabs.executeScript通过Google Chrome扩展将这个脚本注入web应用程序 注入脚本 <script> var angular = document.querySelector('body'); var scope = angular.element(angular).scope(); ... </script> var angular=d

我正在尝试使用谷歌浏览器扩展作为我正在开发的网页的补充工具

我使用
Chrome.tabs.executeScript
通过Google Chrome扩展将这个
脚本注入web应用程序

注入脚本

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

var angular=document.querySelector('body');
var scope=angular.element(angular.scope();
...
脚本被正确地注入。但是,在调用脚本时,我得到了这个错误
uncaughttypeerror:angular.element不是函数。这基本上意味着脚本找不到AngularJS依赖项(?)

所以我的问题是,Chrome扩展插件中的注入脚本是否可以访问页面上的javascript(AngularJS)

如果是,我做错了什么?
如果没有,那么什么是好的替代解决方案?

您正在尝试重用运行在应用程序中的页面脚本中的代码

由于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);
chrome.browserAction.onClicked.addListener(function() {
    chrome.tabs.executeScript({ file: 'script.js' });
});
background.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);
chrome.browserAction.onClicked.addListener(function() {
    chrome.tabs.executeScript({ file: 'script.js' });
});