【问题标题】:We made a listener in background.js in chrome extension but it does not run我们在 chrome 扩展的 background.js 中创建了一个监听器,但它没有运行
【发布时间】:2018-11-02 19:15:03
【问题描述】:

我正在创建一个简单的 chrome 扩展程序,阻止我连接到 Google 域。但是在后台,javascript 继续工作并创建了 background.js 和 on-updated 监听器。但它不起作用。为什么?当我点击Main.js中的图标时,就OK了。

manifest.json

{
      "manifest_version": 2,

      "name": "불법 토토사이트 감지기",
      "description": "불법 토토사이트를 감지해주는 사이트입니다.",
      "version": "1.0",
      "content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'",
      "background": {
        "scripts": ["background.js"],
        "persistent" : false
      },
      "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "popup.html"
      },
      "permissions": [
        "tabs",
        "activeTab"
      ]
  }

background.js

chrome.tabs.onUpdated.addListener(function () {
                var domain = document.URL;
                var google = 'https://www.google.co.kr/';

                if (domain == google) {
                    chrome.tabs.executeScript({
                        code: 'alert("불법 사이트입니다"); history.go(-1);'
                    })
                }


                // $.ajax({
                //     type: 'POST',
                //     url: 'http://207.148.88.110:3000/',
                //     data: {
                //         url: domain
                //     },
                //     dataType: 'json',
                //     success: function(Object){
                //         if (Object.success == '통과') {
                //             document.getElementById('url').innerHTML = Object.success;
                //         }
                //         else {
                //             chrome.tabs.executeScript({
                //                 code: 'alert("불법 사이트입니다"); history.go(-1);'
                //             })
                //         }
                //     },
                //     error: function(error) {
                //         console.log(error);
                //     }
                // })




        })

main.js

chrome.tabs.executeScript({
            code: 'document.URL;'
        }, function (domain) {

            var google = 'https://www.google.co.kr/';

            if (domain == google) {
                chrome.tabs.executeScript({
                    code: 'alert("불법 사이트입니다"); history.go(-1);'
                })
            }




            $.ajax({
                type: 'POST',
                url: 'http://207.148.88.110:3000/',
                data: {
                    url: domain
                },
                dataType: 'json',
                success: function(Object){
                    if (Object.success == '통과') {
                        document.getElementById('url').innerHTML = Object.success;
                    }
                    else {
                        chrome.tabs.executeScript({
                            code: 'alert("불법 사이트입니다"); history.go(-1);'
                        })
                    }
                },
                error: function(error) {
                    console.log(error);
                }
            })


        })

【问题讨论】:

  • 能否提供日志?
  • 什么样的日志?

标签: google-chrome google-chrome-extension


【解决方案1】:
chrome.tabs.onUpdated.addListener(function () {
  var domain = document.URL;
  /* ... */

此时,在您的代码中,document背景页面。所以 URL 将类似于 chrome-extension://your-extension-id/_generated_background_page.html 并且永远不会匹配。

您需要查看提供给onUpdated listeners的详细信息:

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
  var domain = changeInfo.url; // Or tab.url
  /* ... */

【讨论】:

  • 如何从 background.js 获取我正在访问的页面的域?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 2022-09-23
  • 2016-02-12
  • 2020-11-05
  • 1970-01-01
相关资源
最近更新 更多