Javascript 我可以在不是我的站点上添加事件侦听器吗?

Javascript 我可以在不是我的站点上添加事件侦听器吗?,javascript,jquery,Javascript,Jquery,我想知道一个站点上某个DOM元素的所有更改,这些更改不是我的,这样我就可以收到有关DOM元素更改的浏览器通知。 如果我不能在网站上编写代码,我怎么能做到这一点? 我想使用这种方法: //选择目标节点 var target=document.getElementById('some-id'); //创建一个观察者实例 var观察者=新的突变观察者(功能(突变){ 突变。forEach(功能(突变){ console.log(mutation.type); }); }); //观察员的配置

我想知道一个站点上某个DOM元素的所有更改,这些更改不是我的,这样我就可以收到有关DOM元素更改的浏览器通知。 如果我不能在网站上编写代码,我怎么能做到这一点? 我想使用这种方法:

//选择目标节点
var target=document.getElementById('some-id');
//创建一个观察者实例
var观察者=新的突变观察者(功能(突变){
突变。forEach(功能(突变){
console.log(mutation.type);
});    
});
//观察员的配置:
var config={attributes:true,childList:true,characterData:true};
//传入目标节点以及观察者选项
observer.observe(目标,配置);
//稍后,你可以停止观察
observer.disconnect()

您可以通过以下方式实现:

$(function(){
    var keep = '';
    var ajaxurl = "http://foo.bar";

    setInterval(function(){
        $.get( ajaxurl, { sample_data : 'test' }, function(response){

            var log = "<p>Checked</p>";

            if( keep != '' && keep !== response )
                log = "<p>Something has changed</p>";

                $('.log-container').append( log );

        });

    }, 2000);
});
$(函数(){
var保持=“”;
var ajaxurl=”http://foo.bar";
setInterval(函数(){
$.get(ajaxurl,{sample_data:'test'},函数(响应){
var log=“已选中”

”; if(keep!=''&&keep!==响应) log=“有些东西已经改变了”

”; $('.log容器')。追加(日志); }); }, 2000); });

但是你可以用pusher-js做一件更高级的事情,你可以随时向任何网站添加客户端代码。例如,这就是浏览器扩展的主要行为

但您也可以将代码粘贴到浏览器的控制台(Chrome:Ctrl+Shift+J或F12)

在本例中,我们将提供此SO页面的

// select the target node
var target = document.getElementById('question-header');

// create an observer instance
var observer = new MutationObserver(function(mutations) {
  Notification.requestPermission(function (permission) {
    if (permission === "granted") {
      var notification = new Notification("Something has changed!");
    }
  });
  mutations.forEach(function(mutation) { 
    console.log(mutation.type);
  });    
});

// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true };

// pass in the target node, as well as the observer options
observer.observe(target, config);
然后执行此命令以测试其是否正常工作:

var node = document.createElement("b");                
var textnode = document.createTextNode("Hello new item");
node.appendChild(textnode);
document.getElementById("question-header").appendChild(node);  

你的代码将如何在另一个网站上运行?这是我的问题。但是你还没有给我们任何可以使用的东西。你想把它放在某种浏览器插件中吗?你想让它在每个用户的机器上运行吗?你想只穿在你的衣服上吗?你的问题相当于“我该怎么做”——是的,可以回答,但需要一些澄清。看看我自己需要它。我只想在其他人看到之前看到网站上的变化,这样我就可以更快地做出反应。也许以后我会想为其他人制作插件。谢谢!这正是我想知道的。如果我理解正确,它将每隔2秒发送一个查询,并检查是否有更改。这很好,但如果我可以在不查询的情况下获得DOM更改通知,那就更好了。无论如何谢谢你,因为这对我很有用。