javascript - jQuery:在使用 .on() 和 .click() 加载 DOM 后单击 Chrome

标签 javascript jquery html google-chrome firefox

我有一个 UI 页面来测试哪里有很大的自动化空间。例如,有些按钮可能会被一次性或连续点击,它们会执行某些操作。因此,我尝试使用 JS 和 jQuery 自动点击,从 Firefox 开始,然后转向 chrome(使用 greecemonkey 和 tempermonkey)。

从这两种浏览器进行转换并不像我最初想象的那么容易,因为似乎不起作用的是 .click(); chrome 上的方法(至少尝试从浏览器控制台单击一些按钮)。

从浏览器控制台 (chrome) 和 firebug (firefox) 运行时的简化版本:

$(".div.tab-pane.active").find(".delete-link").click();
  • 在 chrome 上:只打印出匹配元素的数组;
  • 在 firefox 上:实际点击链接;

运行:

$(".div.tab-pane.active").find(".delete-link").text();

表示元素被正确定位。

问题:

我是否需要将带有 .on() 方法的事件监听器附加到我尝试单击的按钮?当我尝试这段代码时,它仍然无法正常工作:

function notify() { 
  $(".div.tab-pane.active").find(".delete-link").click();
  alert( "clicked" );
}

$(".div.tab-pane.active").find(".delete-link").on( "click", notify );

$(".div.tab-pane.active").find(".delete-link").on("click", function(){
    alert("clicked");
});

$(".div.tab-pane.active").find(".delete-link").click();
// causes a stack overflow
  • 为什么它适用于 Firefox(来自 firebug 和 greecemonkey)而不适用于 chrome?这两种浏览器有何不同,使 .click() 的工作方式不同?

  • 如何让它发挥作用?

最佳答案

你可以使用 .get(index) 方法,它返回 dom 节点,你可以触发绑定(bind)在它上面的事件:

$(".div.tab-pane.active").find(".delete-link").get(0).click();

来自文档:

The .get() method grants access to the DOM nodes underlying each jQuery object.

我只想添加 .get(index) 返回与 jQuery 对象匹配的 DOM 元素,所以在我们的例子中选择器是 ".delete-link" 所以当我们在 jQuery/js 中绑定(bind)一个点击事件时,它只返回 dom 元素,所以在 dom 节点上绑定(bind)一个点击事件你需要访问它。

所以我这样说:
Chrome 不允许间接打开绑定(bind)到 dom 节点的文件或事件。

关于javascript - jQuery:在使用 .on() 和 .click() 加载 DOM 后单击 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26902859/

相关文章:

javascript - 用单击的按钮填充文本区域

javascript - html5 加载音频时间/元数据但不加载音频?

javascript - 在 AngularJS 中编写待办事项列表时无法理解删除过程

javascript - 如何使用asp.net将两个图像放置在单个 Canvas 中?

javascript - 调用 RegisterStartupScript 时出现 "Object expected"错误

javascript - 将指针事件重新触发到下层(用于使用 interact.js 进行不规则形状的拖动)

jquery - 检测HTML5输入的form属性,如果不支持则尝试序列化

javascript - 如何使用javascript添加相似事件id的计数值?

javascript - document.write、Array.push 以及将字符串放在一起

javascript - 移除 KineticJS 中的舞台