【问题标题】:DOM click() is not working on this buttonDOM click() 不适用于此按钮
【发布时间】:2013-04-14 09:24:23
【问题描述】:

当我使用方法click()点击按钮时,提交失败。
但是,当我使用鼠标单击该网页上的按钮时,(提交表单相同)它可以工作。

HTML 文件:

<button xmlns="http://www.w3.org/1999/xhtml" class="ui-button button1"       type="submit" id="create">
    <span>
        <span>Create</span>
    </span>
</button>

我的用户脚本文件:

document.getElementById("create").click();

如何使用 HTML DOM click() 点击按钮?

【问题讨论】:

标签: javascript html click userscripts


【解决方案1】:

也许不是点击按钮。 您可以在 javascript 中将表单提交为

document.getElementByName('form1').submit();

因为它满足您的要求。

【讨论】:

  • 好想,只是问题中没有指明表格,而且使用了&lt;button&gt;标签,所以可能没有表格。
【解决方案2】:

点击方法并不总是有效。尝试发送类似于this answerclick 事件:

var targBtn     = document.querySelector ("#create");
var clickEvent  = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
targBtn.dispatchEvent (clickEvent);

但也要注意,按钮可能根本无法在点击时操作。见"Choosing and activating the right controls on an AJAX-driven site"

该按钮可能对mousedownmouseup 或某些事件组合进行操作。使用该问题中的技术来激活控件。 如果您无法使用,请链接到目标页面。

【讨论】:

  • 同样感谢。我使用 settimeout 解决了它。 window.setTimeout(function () { document.getElementById("button-create").click(); }, 3000) 因为 click() 获取表单中的一个属性太快,所以失败了
  • 很高兴你能成功。如果您让我们知道内容是通过 javascript (AJAX) 添加的,那么您下次会得到更好更快的答案。
【解决方案3】:

将调用包装在一个匿名的自执行结构中,如下所示:

(function(){
    document.getElementById("create").click();
})();

这将在加载 javascript 时模拟click

【讨论】:

    【解决方案4】:

    如果您对按钮的价值很灵活,那么请执行以下操作:

    <button xmlns="http://www.w3.org/1999/xhtml" class="ui-button button1" value="submit" type="submit" id="create">
    
    document.getButtonByValue('submit').click();
    

    这很好用。

    jsfiddle link

    【讨论】:

    • 这是一个 userscript 问题。在这些问题中,OP 通常无法控制页面的 HTML。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2016-10-04
    • 2020-09-08
    • 1970-01-01
    • 2019-08-20
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多