javascript - 如何点击带有特定文本的按钮?

标签 javascript button greasemonkey

我正在尝试修改下面的脚本以单击网站上如下所示的按钮:

<button id="checkPrice-02070" onclick="checkPrice(02070,null); return false;" class="orangeDark">
  <span>check price</span>
</button>

我正在使用下面的代码。到目前为止,页面似乎一直在重新加载;没有其他事情发生。
对新人有什么建议吗?

(function () {
    window.addEventListener("load", function (e) {
        clickConfirmButton()
    }, false);
})();

function clickConfirmButton() {
    var buttons = document.getElementsByTagName('button');
    var clicked = false;
    for (var index = 0; (index < buttons.length);  index++) {
        if (buttons[index].value == "check price") {
            buttons[index].click();
            clicked = true;
            break;
        }
    }
    if (!clicked) {
        setTimeout("window.location.reload()", 300 * 1000);
    }
}

最佳答案

一个<button> value不是可见文本。您想要搜索textContent .

但是:

  1. 如果该示例 HTML 正确,您最好搜索以 checkPrice 开头的 ID。 。请参阅下面的代码。

  2. 如果找不到按钮,您确定要重新加载吗?如果它是通过 AJAX 添加的,这不是最好的方法。请参阅this answer .

  3. 不要使用setTimeout带有一个像这样的字符串(用于评估)参数。请参阅下面的代码。

  4. 您不需要将代码包装在匿名函数中。

无论如何,鉴于示例 HTML,这应该可行:

window.addEventListener ("load", clickConfirmButton, false);

function clickConfirmButton (zEvent) {
    var button = document.querySelector ("button[id^='checkPrice']");
    if (button) {
        button.click ();
    }
    else {
        setTimeout (function () { location.reload(); }, 300 * 1000);
    }
}
<小时/> <小时/>

要检查按钮文本,请使用:

function clickConfirmButton (zEvent) {
    var buttons = document.querySelectorAll ("button[id^='checkPrice']");
    var clicked = false;

    for (var index = 0, numBtn = buttons.length;  index < numBtn;  ++index) {
        if (/check price/i.test (buttons[index].textContent) ) {
            buttons[index].click();
            clicked = true;
            break;
        }
    }
    if (!clicked) {
        setTimeout (function () { location.reload(); }, 300 * 1000);
    }
}

关于javascript - 如何点击带有特定文本的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112186/

相关文章:

javascript - Cypress - 控制要运行的测试 - 使用 Cypress 进行播种

javascript - 将鼠标悬停在宽度不等的重叠 div 上

2个类之间的Java Action 监听器

jquery - 如何获取 jQuery-UI 版本?

javascript - nsISocketTransportService 使用 Firefox 插件 sdk

javascript - 添加元素的进度条

javascript - 如何制作按特定顺序单击按钮解锁的密码

iphone - 按钮文本未显示且 xcode 崩溃

javascript - 运行 jQuery,重新加载,冲洗并重复......如何?

jquery - 在 Firefox 中检测下载状态