使用chrome扩展打开新选项卡,使用jQuery注入css

时间:2014-04-16 22:08:48

标签: google-chrome google-chrome-extension

我使用带有弹出窗口的chrome扩展来注入网站并隐藏一些div。

  1. 现在的问题是,我想打开一个新的标签页 url:https://app.example.de/dashboard/并使用我的contentscript.js
  2. 注入样式
  3. 另一个问题是:有时应用程序会重新加载页面。在此之后,所有注射都会丢失。有没有机会在没有点击popup.html-Button的情况下全部注入https://app.example.de/dashboard/
  4. 如果页面已经打开,以下代码可以正常工作。

    的manifest.json

    {
    "name": "example stealth mode",
    "version": "1.1",
    "description": "lorem ipsum",
      "browser_action": {
      "default_icon": "icon-on.png",
        "default_popup": "popup.html",
      "default_title": "example stealth mode"
    
    },
    "manifest_version": 2,
    "content_scripts": [
        {
          "matches": ["https://*.app.example.de/*"],
          "js": ["jquery-1.11.0.min.js", "background.js"]
        }
      ],
        "background": {
            "scripts": ["background.js"]
        },
        "permissions": [
            "tabs", "https://*.app.example.de/*"
        ]   
    }
    

    popup.js

    document.addEventListener('DOMContentLoaded', function () {
        document.getElementById('On').addEventListener('click', clickHandlerOn);
    })
    // An
    function clickHandlerOn(e) {
        chrome.extension.sendMessage({directive: "popup-click"}, function(response) {
            this.close(); // close the popup when the background finishes processing request
        });
    }
    

    background.js

    chrome.extension.onMessage.addListener(
        function(request, sender, sendResponse) {
            switch (request.directive) {
            case "popup-click":
                // execute the content script
                chrome.tabs.executeScript(null, { // defaults to the current tab
    
                    file: "contentscript.js", // script to inject into page and run in sandbox
                    allFrames: true // This injects script into iframes in the page and doesn't work before 4.0.266.0.
                });
    
                sendResponse({}); // sending back empty response to sender
                break;
            default:
                // helps debug when request directive doesn't match
                alert("Unmatched request of '" + request + "' from script to background.js from " + sender);
            }
        }
    );
    

    contenscript

    $(document).ready(function() {
        $('div#hlXXXContent').hide();
        $('#hlYYY').hide();
        $('#hlZZZ').hide();
        $('h3.hlVVV').append(' Stealth Mode');
    });
    

    popup.html

    <li><button class="hl123" id="On"><span class="hlSubmenuSelected">Stealthmode on</span</button></li>
    

1 个答案:

答案 0 :(得分:0)

文件名contentscript.js很奇怪,因为它不是你正在使用它的内容脚本。为什么不尝试使用run_at并在每个目标网页加载时加载一些内容,这将使您的代码有机会决定是否对页面执行更多操作。