【问题标题】:Watch a DOM property观察一个 DOM 属性
【发布时间】:2015-04-10 20:55:29
【问题描述】:

我正在尝试监控第三方网站上的 DOM 元素。在倒数计时器到达之前,该元素是不存在的,然后它被创建。

我已经取得了一些成功:document.getElementsByClassName('countdown ng-hide').length

当它从 0 变为 1 时,我想实现一个功能。

我该怎么做?我尝试过使用 Mutation Observer,但它不会让我观察到空节点。

谢谢!

编辑:这是我到目前为止所得到的。

var timesDone = 0; 
var songID = 0; 
function clickit(xsongID) { 
if(document.getElementsByClassName('lottery-countdown ng-hide').length == 1) { 

document.getElementsByClassName('media submission ng-scope')[xsongID].click(); songName = document.getElementsByClassName('media-title submission-name ng-binding')[xsongID].outerHTML; timesDone++; } 

} 
setInterval(clickit, 29900, songID); 

【问题讨论】:

  • 您可以在setInterval 计时器上拉取倒计时的值,并在它到达结束时采取行动。或者您可以观察节点的父节点以添加子节点
  • 一个问题,如何通过 JavaScript 监控 3rd 方网站中的 dom 节点???
  • Chrome 中的 JavaScript 控制台!

标签: javascript jquery dom mutation-observers mutation


【解决方案1】:

我最近通过设置这样的间隔函数来做到这一点:

var timesTest = 0;
var checkExists = setInterval(function() {
    if ($('.yourClassElement').length) {
       // ok element found : do your stuff and clear the Interval...
       // stuff...
       clearInterval(checkExists);
       timesTest = 0;
     }
     timesTest++;
     // I won't let this run more than 5 seconds, so :
     if (timesTest*100 > 5000)
        clearInterval(checkExists);
}, 100);

【讨论】:

  • 我正在使用间隔,它很棒,但并不完美。如果你想改变函数的属性,(比如说,你想改变的东西的ID)你必须清除区间并开始一个新的,因为区间函数不会改变。
猜你喜欢
  • 2016-04-11
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 2020-08-05
  • 2021-03-30
  • 1970-01-01
相关资源
最近更新 更多