如何使用iMacros和javascript在特定数字处停止javascript计数器



我有2个挑战。我想停止此演示页面上的计数器,请参阅示例 4 当它达到 50 时,使用纯 javascript 并使用带有 javascript 的 iMacros。

这是我正在使用的JavaScript。

var start_button = document.getElementById('AutomatoOrphanInput_INPUT_6_tag_DIV_7_tag_DIV_4_tag_BODY_0_tag_HTML_0');
var stop_button = document.getElementById('AutomatoOrphanInput_INPUT_8_tag_DIV_7_tag_DIV_4_tag_BODY_0_tag_HTML_0');
//start_button.click()
var timerId = setInterval(function() {
    console.time('session_duration');
    var counter = document.getElementById('counter')[0].innerHTML;
    if (counter => 50) {
        stop_button.click();
        clearInterval(timerId);
    }
    console.timeEnd('session_duration');
}, 200);

在控制台中,我得到"未捕获的类型错误内部html。无法读取属性"innerHTML"未定义"我在这里做错了什么?

然后我如何让这个停止函数在 iMacros 中工作?

我听说使用JS突变观察器将是一个更好的解决方案,而不是无限循环。我将如何使用它?

Pfff,当您打开线程时,请务必提及您的 FCI(完整配置信息(,许多命令没有为所有浏览器/版本实现(或被破坏!
=> iMacros for FF v9.0.3/v8.9.7...?, FF51...?, OS...?

但无论如何,这里有一个简单的 3 行解决方案,在纯".iim"(我不做".js"脚本(,它将适用于所有浏览器,并且如果您愿意,您可以轻松转换为 JavaScript...
它只是使用"!TIMEOUT_STEP'(+相对定位以获得额外的可靠性,甚至不是必需的(:

SET !TIMEOUT_STEP 100
TAG POS=1 TYPE=P ATTR=TXT:timer<SP>has<SP>been<SP>executed<SP>50<SP>times.
TAG POS=R1 TYPE=INPUT:BUTTON ATTR=VALUE:"timer.stop()"

在您的网站上演示完整脚本,缩短为 10 秒(而不是 50 秒(+ 垂直滚动调整以进行视觉关注(在 v9.0.3 中中断 => '!添加了错误忽略"以使脚本 v9.0.3 兼容(:

VERSION BUILD=8820413 RECORDER=FX
SET !ERRORIGNORE YES
URL GOTO=http://www.jqueryscript.net/demo/Multifunctional-jQuery-Countdown-Stopwatch-Plugin-Timer-js/
URL GOTO=javascript:window.scrollBy(0,680)
SET !TIMEOUT_STEP 100
TAG POS=1 TYPE=P ATTR=TXT:timer<SP>has<SP>been<SP>executed<SP>10<SP>times.
TAG POS=R1 TYPE=INPUT:BUTTON ATTR=VALUE:"timer.stop()"
URL GOTO=javascript:window.scrollBy(0,-190)

(您可能需要调整屏幕/分辨率/等的滚动值...
(在 iMacros for FF v8.8.2、PM v26.3.3 (=FF47(、Win10-x64 上测试。

最新更新