Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DOM文本上的触发器已更改_Javascript_Html_Dom - Fatal编程技术网

Javascript DOM文本上的触发器已更改

Javascript DOM文本上的触发器已更改,javascript,html,dom,Javascript,Html,Dom,我正在开发一些web自动化工具(C#但这个主题不是关于it…)。 将WebBrowser工具取消作为浏览器并连接到某个网站 网站有动态内容,每秒更新一次。使用setTimeout更新其内容的网站。然后数据解析的网站更新DOM元素(表)中的内容。它将删除3个旧行并插入3个新行 我的目标是为这次事件触发。 我检查了一下,网站没有使用文档。请编写。据我所知,网站可以通过一些方式修改内容。第一个是innerHTML属性,但表有4行,站点不更新/删除第一行。因此,另一种方法是追加child和删除child

我正在开发一些web自动化工具(C#但这个主题不是关于it…)。 将WebBrowser工具取消作为浏览器并连接到某个网站

网站有动态内容,每秒更新一次。使用setTimeout更新其内容的网站。然后数据解析的网站更新DOM元素(表)中的内容。它将删除3个旧行并插入3个新行

我的目标是为这次事件触发。 我检查了一下,网站没有使用
文档。请编写
。据我所知,网站可以通过一些方式修改内容。第一个是
innerHTML
属性,但表有4行,站点不更新/删除第一行。因此,另一种方法是追加child删除child更真实。 所以我的问题是我怎样才能触发这个动作

据我所知,可以为DOM元素定义自己的函数。那么我如何重新定义appendChild和removeChild方法呢

可能是这样的吗

var realRC = contentTable.removeChild;
contentTable.removeChild = function(el){
alert("Trigged!");
realRC(el);
}

我猜你说“trig”是指trigger

触发它 在浏览器中,超时和间隔都有ID,您可以清除它们,但不能直接触发。最好的选择是查找setTimeout/setInterval语句并复制它们

聆听事件 不管怎么说,有一条肮脏的路和一条干净的路。假设您可以在以下位置访问表:

var target = document.querySelector('#some-id');
干净的方法是使用DOM 肮脏的方式就是肮脏的检查 它得到了更好的支持,而且更稳定,因为观察员是真正的新手,而且仍然存在问题。 每16毫秒检查一次表的
.innerHTML
值是否更改

var oldHTML = "";
setTimeout(function(){
    if(target.innerHTML !== oldHTML){
        changed(); // changed is a function that you define and notify
    }
},16);
如果有诸如position/etc之类的HTML更改,您可以使用
.textContent


老实说,肮脏的方式更简单、更稳定,但更丑陋。我还是会去的。

我想你说“trig”的意思是trigger

触发它 在浏览器中,超时和间隔都有ID,您可以清除它们,但不能直接触发。最好的选择是查找setTimeout/setInterval语句并复制它们

聆听事件 不管怎么说,有一条肮脏的路和一条干净的路。假设您可以在以下位置访问表:

var target = document.querySelector('#some-id');
干净的方法是使用DOM 肮脏的方式就是肮脏的检查 它得到了更好的支持,而且更稳定,因为观察员是真正的新手,而且仍然存在问题。 每16毫秒检查一次表的
.innerHTML
值是否更改

var oldHTML = "";
setTimeout(function(){
    if(target.innerHTML !== oldHTML){
        changed(); // changed is a function that you define and notify
    }
},16);
如果有诸如position/etc之类的HTML更改,您可以使用
.textContent


老实说,肮脏的方式更简单、更稳定,但更丑陋。我还是会努力的。

本杰明·格伦鲍姆(解决它) 我把这篇文章贴在这里是为了更具可读性

var dataTable = document.getElementById("event_1538016");

dataTable.appendChild = function(node)
{
    console.log("trigged!");
    document.appendChild.apply(dataTable,[node]); // args is array!!
    return node;
}

在mozilla上工作得非常好!我希望它能在IE9+上运行(解决它) 我把这篇文章贴在这里是为了更具可读性

var dataTable = document.getElementById("event_1538016");

dataTable.appendChild = function(node)
{
    console.log("trigged!");
    document.appendChild.apply(dataTable,[node]); // args is array!!
    return node;
}


在mozilla上工作得非常好!我希望它能在IE9+上运行。

不过它的速度还不够慢,不能起到作用:)还要注意,变异观察者是非常新的,只在最现代的浏览器(IE11)等中支持,但它不可能取代DOM中的appendChild方法吗?这将是最好的办法。。同样,我需要为IE 9 + 11的工具做一个工具:(它是代码> RealAppEngDist.Apple(DATABATE,Noad)< /Cord>保存上下文。无论如何,如果你还有其他问题,请在SurayTE问题线程中问他们。如果这解决了你的问题,请考虑接受这个答案。还要注意的是,变异观察者是非常新的,并且只在最现代的浏览器(IE11)等中受支持,但它不可能取代DOM中的appendChild方法吗?这将是最好的办法。。同样,我需要为IE 9 + 11的工具做一个工具:(代码< > RealAppEndPo.Apple(DATABATE,Noad)< /COD>保存上下文。无论如何,如果你还有其他问题,请在SurayTE问题线程中问他们。如果这解决了你的问题,请考虑接受这个答案。我不明白……你从评论中拿走了我的解决方案。(顺便说一句,这是不可靠的)然后在10分钟后将其作为您自己的答案发布。不,不!这不是我的解决方案!它是您的!但我将节点设为数组)对不起。我会接受你的回答。这不是接受我的解决方案,我在这里回答只是为了帮助你。你可能想潜伏在这里,读一读询问/回答是如何工作的。你也可以查一下。对不起,我是这里的noob,不知道所有的发帖规则。Im将阅读帮助中心。。。再次感谢)我不明白。。。你从评论中得到了我的解决方案(顺便说一句,这是不可靠的),然后在10分钟后将其作为你自己的答案发布。不!这不是我的解决办法!这是你的!但我把节点设为数组)对不起。我会接受你的回答。这不是接受我的解决方案,我在这里回答只是为了帮助你。你可能想潜伏在这里,读一读询问/回答是如何工作的。你也可以查一下。对不起,我是这里的noob,不知道所有的发帖规则。Im将阅读帮助中心。。。(再次感谢)