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