如何将Angular对象传递给Google Chrome扩展程序中的Javascript函数?

at

我正在构建一个Google chrome扩展程序,该扩展程序可“抓取”特定网站的对象的DOM,并在javascript函数中对其进行处理。

目前,我正在使用chrome.tabs.query API在后台页面中执行操作。我能够使用以下方法从网址中提取数据

    chrome.tabs.query({ 'active': true, 'lastFocusedWindow': true }, function (tabs) {
    var url = tabs[0].url;
    console.log(url);
    var s = url.split('?')[1];
    var installation = s.split('&')[0];
    full_url = 'http://domain.com/' + url;
    window.open(full_url, '_blank');
});

但是现在我试图将Angular对象从页面的DOM传递给类似的函数:

    chrome.tabs.query({ "active": true, "lastFocusedWindow": true }, function (tabs) {
        var dom_el = this.document.querySelector('[ng-controller="chartNewController"]');
        var ng_el = this.angular.element(dom_el);
        var ng_el_scope = this.ng_el.scope();
        var address = this.ng_el_scope.fullAddress;
    console.log(address);
});

我收到以下错误:

无法读取null处未定义的属性'querySelector'

我不确定我要使用的是最有效的方法,所以我的问题是就构建chrome扩展而言,在背景HTML页面的DOM中“抓取” Angular对象的最佳方法是什么?

海原爱

下一行有两个错误:

var dom_el = this.document.querySelector('[ng-controller="chartNewController"]');
  1. this指回调,没有财产documentthis对象
  2. 如果直接使用document.querySelector...则事件仍将无法获取,因为当您在后台页面中调用此行时,它document指向后台页面文档而不是网页。

一个建议是使用消息传递来获取值,您将需要一个内容脚本并在它与背景页面之间建立通信。

背景页面:

chrome.tabs.query({ "active": true, "lastFocusedWindow": true }, function (tabs) {
    chrome.tabs.sendMessage(tabs[0].id, {action: 'get'}, function(response) {
        console.log(response.address);
    });
});

内容脚本(您需要检索正确的角度对象,具体取决于您的网页,我对此无能为力):

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
    if(request.action === 'get') {
        var dom_el = document.querySelector('[ng-controller="chartNewController"]');
        // Ensure retrieving the correct angular object (The previous this object), that depends on your web page environment.
        var ng_el = angular.element(dom_el);
        var ng_el_scope = ng_el.scope();
        var address = ng_el_scope.fullAddress;
        sendResponse({ address: address });
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将std :: bind对象传递给函数

来自分类Dev

如何将json对象传递给$ eval函数

来自分类Dev

如何将类的对象传递给对象的类函数中的函数?

来自分类Dev

如何将javascript对象传递给使用例如onclick指定的javascript函数

来自分类Dev

如何将“此”对象传递给使用协议的函数中调用的回调函数

来自分类Dev

Javascript-如何将原始对象传递给回调函数

来自分类Dev

Javascript-如何将原始对象传递给回调函数

来自分类Dev

如何将事件对象传递给对象内的函数

来自分类Dev

如何将函数对象传递给需要void *指针的函数

来自分类Dev

Java类-如何将泛型对象传递给函数

来自分类Dev

如何将python对象传递给需要指针类型的函数

来自分类Dev

如何将超类对象传递给子类构造函数?

来自分类Dev

如何将编写的对象传递给另一个类的构造函数?

来自分类Dev

如何将类对象传递给函数但防止突变?

来自分类Dev

如何将泛型类型对象传递给类构造函数

来自分类Dev

如何将子对象传递给函数并检查其值

来自分类Dev

cpp 如何将 state_t* 类型的对象传递给函数

来自分类Dev

如何将事件对象传递给 React 事件处理函数?

来自分类Dev

如何将对象传递给单独的函数-Python

来自分类Dev

如何将对象传递给CasperJS函数

来自分类Dev

如何将对象传递给 std::accumulate 函数?

来自分类Dev

如何将javascript对象传递给C#MVC 4控制器

来自分类Dev

JavaScript:如何将单个全局对象传递给一组类?

来自分类Dev

如何将ng-repeat中的当前对象传递给$ mdDialog?

来自分类Dev

如何将强类型的复杂对象传递给MVC3中的Ajax方法

来自分类Dev

如何将服务对象传递给Android中的子类?

来自分类Dev

如何将Ajax中的FormData和JSON对象传递给Spring MVC Controller?

来自分类Dev

如何将 Ajax Json 对象传递给 .Net Core 中的控制器类?

来自分类Dev

如何通过单击按钮将事件对象传递给angular.dart函数?

Related 相关文章

  1. 1

    如何将std :: bind对象传递给函数

  2. 2

    如何将json对象传递给$ eval函数

  3. 3

    如何将类的对象传递给对象的类函数中的函数?

  4. 4

    如何将javascript对象传递给使用例如onclick指定的javascript函数

  5. 5

    如何将“此”对象传递给使用协议的函数中调用的回调函数

  6. 6

    Javascript-如何将原始对象传递给回调函数

  7. 7

    Javascript-如何将原始对象传递给回调函数

  8. 8

    如何将事件对象传递给对象内的函数

  9. 9

    如何将函数对象传递给需要void *指针的函数

  10. 10

    Java类-如何将泛型对象传递给函数

  11. 11

    如何将python对象传递给需要指针类型的函数

  12. 12

    如何将超类对象传递给子类构造函数?

  13. 13

    如何将编写的对象传递给另一个类的构造函数?

  14. 14

    如何将类对象传递给函数但防止突变?

  15. 15

    如何将泛型类型对象传递给类构造函数

  16. 16

    如何将子对象传递给函数并检查其值

  17. 17

    cpp 如何将 state_t* 类型的对象传递给函数

  18. 18

    如何将事件对象传递给 React 事件处理函数?

  19. 19

    如何将对象传递给单独的函数-Python

  20. 20

    如何将对象传递给CasperJS函数

  21. 21

    如何将对象传递给 std::accumulate 函数?

  22. 22

    如何将javascript对象传递给C#MVC 4控制器

  23. 23

    JavaScript:如何将单个全局对象传递给一组类?

  24. 24

    如何将ng-repeat中的当前对象传递给$ mdDialog?

  25. 25

    如何将强类型的复杂对象传递给MVC3中的Ajax方法

  26. 26

    如何将服务对象传递给Android中的子类?

  27. 27

    如何将Ajax中的FormData和JSON对象传递给Spring MVC Controller?

  28. 28

    如何将 Ajax Json 对象传递给 .Net Core 中的控制器类?

  29. 29

    如何通过单击按钮将事件对象传递给angular.dart函数?

热门标签

归档