使用javascript单击没有href的项目
基本上,我使用的是名为greasemonkey的Firefox插件,我正在尝试编写一个脚本,其目的是在每个页面上找到一个特定的类指定的图像并单击它。如果要单击的项目有一个href,这是相当容易完成的,因为这里有几个其他帖子,有些帖子使用锚等等,但是假设没有href,有没有办法单击图像或按钮 例如,假设我想通过一项调查,他们有几个复选框或单选按钮。有没有办法使用greasemonkey中的脚本选择按钮 作为参考,这是我过去点击带有href属性的按钮时所做的使用javascript单击没有href的项目,javascript,dom-events,greasemonkey,Javascript,Dom Events,Greasemonkey,基本上,我使用的是名为greasemonkey的Firefox插件,我正在尝试编写一个脚本,其目的是在每个页面上找到一个特定的类指定的图像并单击它。如果要单击的项目有一个href,这是相当容易完成的,因为这里有几个其他帖子,有些帖子使用锚等等,但是假设没有href,有没有办法单击图像或按钮 例如,假设我想通过一项调查,他们有几个复选框或单选按钮。有没有办法使用greasemonkey中的脚本选择按钮 作为参考,这是我过去点击带有href属性的按钮时所做的 $("a.tip")
$("a.tip").each(function(){
if($(this).attr("caption")=="captionName"){
$.get("http://www.website.com" +$(this).attr("href"),window.location.reload());
return;
}
});
*至于greasemonkey的功能,我不确定它能做什么,不能做什么。diveintogreasemonkey.org似乎不再承载该文档,因此很难获得该文档
此外,这与单击侦听器不同,因为我希望脚本执行单击操作。如果您有任何参考资料能为我指明正确的方向,我们也将不胜感激
最后一点注意,我对这个web代码领域相当陌生,所以如果您愿意像我什么都不知道一样解释它,我一点也不会生气。因为您使用的是JQuery,我假设您的脚本中有一个@require。 //@需要http://code.jquery.com/jquery.min.js 现在,为什么click不为你工作? 您在控制台中有任何错误吗 我试过这个密码
setTimeout(function(){
alert('about to click/select a radio button')
$('#radio2').prop('checked', true);
alert('ready to click images with class .imagem ?')
$('.imagem').click()
}, 2000)
在这里:
对我来说很好。
看看它是否适合您。您可以通过生成实际的单击事件来单击任何东西。不需要href,这项技术非常适合在web 2.0网站上激活现代的、javascript支持的控件 此方法即使在.click或jQuery的`.单击“不”时也有效。但是,没有任何方法对每个控件都有效 纯JavaScript适用于Firefox、Chrome、Greasemonkey和其他浏览器:
var clickTarget = document.querySelector ("Any valid CSS selector");
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
clickTarget.dispatchEvent (clickEvent);
jQuery版本:
请注意,这两个代码段一次用于一个链接/按钮/等。
在AJAX驱动的页面上,请确保首先检查目标节点是否存在,如果需要,请等待。greasemonkey的主页:非常感谢,firefox插件链接仅引用了我前面提到的站点。我会确保我将其添加到书签中。用于制作按钮的html示例是什么?您可能想看看这个,因为它似乎非常接近您自己的问题:酷,我在搜索时没有看到这个。我会用这些信息把事情弄得一团糟。就一些示例html而言,我可能需要花点时间才能看到,因为我目前正在使用智能手机,提取源html并不是最容易的事情。
var clickTarget = $ ("Any valid jQuery selector");
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
clickTarget[0].dispatchEvent (clickEvent);