【问题标题】:Using javascript to click on item with no href使用javascript单击没有href的项目
【发布时间】:2020-12-16 16:33:12
【问题描述】:

基本上我正在使用名为“greasemonkey”的 Firefox 插件,并且我正在尝试编写一个脚本,其目的是在每个页面上找到特定类指定的图像并单击它。如果要“点击”的项目有一个href,这很容易完成,因为这里有几个其他帖子,有些使用锚等,但假设没有href,有没有办法“点击”图像还是按钮?

例如,假设我想完成一项调查,并且他们有多个复选框或单选按钮。有没有办法使用greasemonkey中的脚本来选择按钮?

作为参考,这是我过去所做的“单击”具有 href 属性的按钮。

$("a.tip").each(function(){
if($(this).attr("caption")=="captionName"){
$.get("http://www.website.com" +$(this).attr("href"),window.location.reload());
return;
    }
});

*至于greasemonkey的能力,我不确定它能做什么,不能做什么。 diveintogreasemonkey.org 似乎不再被托管,因此很难获得文档。

此外,这与点击侦听器不同,因为我希望脚本执行点击。您可能拥有的任何可以为我指明正确方向的参考材料也将不胜感激。

最后一点,我对“网络代码”这个领域相当陌生,所以如果你能像我什么都不知道一样解释它,我一点也不生气。

【问题讨论】:

  • greasemonkey 主页:greasespot.net
  • 非常感谢,firefox 插件链接只引用了我前面提到的网站。我会确保将其加入书签。
  • 什么是用于制作按钮的html示例?
  • 您可能想看看这个,因为它似乎非常接近您自己的问题:stackoverflow.com/questions/6466856/…
  • 酷,我在搜索过程中没有看到这个。我会用这个信息再搞砸一点。就一些示例 html 而言,由于我目前在我的智能手机上,并且提取源 html 并不是最简单的事情,因此我可能需要一点时间来了解。

标签: javascript dom-events greasemonkey


【解决方案1】:

您可以通过生成实际的点击事件来点击任何内容。不需要href,这种技术非常适合在“web 2.0”网站上激活现代的、由javascript驱动的控件。

即使.click() 或 jQuery 的 `.click() 不起作用,此方法也有效。 (但是,没有任何方法适用于每个控件。)

纯 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 版本:

var clickTarget = $ ("Any valid jQuery selector");
var clickEvent  = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
clickTarget[0].dispatchEvent (clickEvent);


请注意,这两个 sn-ps 都用于一个链接/按钮/等。一次。
在 AJAX 驱动的页面上,请确保首先检查目标节点是否存在,并在必要时等待。

【讨论】:

    【解决方案2】:

    由于您使用的是 JQuery,我假设有一个 @require 是您的脚本。
    // @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)
    

    这里:http://jsfiddle.net/QkCs4/5/

    对我来说效果很好。
    看看它是否适合你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多