从具有chrome扩展名的网页中删除图像

时间:2016-01-01 10:07:45

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

我正在尝试编写一个简单的Google Chrome扩展程序,可以从stackoverflow.com网站中删除stackoverflow徽标。但它不起作用。

这是我的工作。

manifest.json

{
  "manifest_version": 2,
  "name": "Transpose",
  "description": "Extension to switch images",
  "version": "1.0",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "activeTab"
  ]
}

popup.html

<!doctype html>
<html>
<head>
    <title>Transpose</title>
    <script src="jquery-1.11.3.min.js"></script>
    <script src="popup.js"></script>
</head>
<body>
<h1>Transpose</h1>
<button id="btnEnable">Enable Add-on</button>
</body>
</html>

popup.js

document.addEventListener('DOMContentLoaded', function () {

    chrome.tabs.getCurrent(function (tab) {
        //alert(tab.title);

        $('#btnEnable').on('click', function () {

            $('#hlogo').remove();

        });

    });

}, false);

任何人都可以帮我弄清楚错误吗?

2 个答案:

答案 0 :(得分:2)

请记住,此代码未在与页面其余部分相同的环境中运行。这是它自己的html页面,它有自己的DOM,事件处理程序等。你需要将一个脚本注入stackoverflow页面,你可以从{{3)学习如何做}}。

答案 1 :(得分:1)

您不能使用chrome.tabs.getCurrent,因为您是从弹出窗口调用它。 Popup isn't a tab and it will give you undefined.

实际上,您不需要获取当前选项卡。您需要做的是致电chrome.tabs.executeScript,如:

chrome.tabs.executeScript( { code: "$('#hlogo').remove();" } );

为此,您需要"activeTab"个权限和"https://stackoverflow.com" cross-origin permissions