Как отследить изменение страницы (плагин Chrome Context Script)? - PullRequest
0 голосов
/ 21 апреля 2011

Я пишу простой плагин Chrome, предназначенный для удаления элементов DOM с какого-либо сайта.

manifest.json

{ 
  "name": "bla", 
  "version": "1.0",
  "description": "bla", 
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["myscript.js"]
    }
  ],
  "permissions": [
  "tabs", 
  "http://*/*"
    ]
}

myscript.js

window.onload = start;

function start()
{
    var ads = document.getElementById("left_ads");
    ads.parentNode.removeChild(ads);
    alert("bla");
}

Когда я загружаю целевую страницу, все работает отлично: div id = "left_ads" удаляется как положено.Но когда я щелкаю ссылку на страницу, которая также имеет похожий div id = "left_ads", мой скрипт не работает.Я знаю, что, вероятно, я должен выбрать другое событие, не window.onload (), а какое?

Заранее спасибо!

1 Ответ

0 голосов
/ 21 апреля 2011

Оказывается, я нашел решение для этого. Я использовал фоновый HTML-файл. Итак, плагин теперь выглядит так:

manifest.json:

{ 
  "name": "bla", 
  "version": "1.0", 
  "description": "bla", 
  "background_page": "background.html",
  "permissions": [
  "tabs", 
  "http://*/*"
    ]
}

background.html:

<html>
  <script>
    chrome.tabs.onUpdated.addListener(start);

    function start(tabID, changeInfo, tab)
    {
        chrome.tabs.executeScript(null, { file: "myscript.js"   })

    }

  </script>
</html>

myscript.js:

var ads = document.getElementById("left_ads");
ads.parentNode.removeChild(ads);

Работает нормально, на каждой странице.

...