.prepend()到动态页面上的pageMod和jQuery的所有链接

时间:2015-11-19 18:58:28

标签: javascript jquery dom firefox-addon-sdk

我正在尝试使用pageMod将.prepend()图片添加到每个Google搜索结果链接中。它适用于第一个结果页面,但在加载其他页面或编辑搜索词时则不行。那是因为我的脚本在页面末尾加载,动态内容更改不会再次加载我的脚本。我该如何解决这个问题?

index.js

var self = require("sdk/self");
var pageMod = require("sdk/page-mod");

pageMod.PageMod({
  include: /^https?:\/\/.*\.google\..+/,
  contentStyleFile: self.data.url("style.css"),
  contentScriptFile: [self.data.url("jquery.min.js"), self.data.url("script.js")]
});

的script.js

$('.r a').each(function(index) {
  var main = "http://****.***";
  var url = $(this).attr('href');

  $(this).prepend("<img width='16px' height='16px' src='" + main + url + "'> ");
})

1 个答案:

答案 0 :(得分:1)

您应该在承载搜索结果的父元素上使用MutationObserver

var Col = document.getElementById('center_col');
if(Col) {
    var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        // perform prepend image  
        }                       
    });    
    });                  

    var cfg = { attributes: true, attributeFilter : ['style'], childList: false };                    
    observer.observe(Col, cfg); 
}