Chrome扩展程序-使用热键单击页面上的元素(按钮)

迪恩·米西奇(Dean Misic)

我正在尝试使用热键单击页面上的特定按钮,该按钮将触发执行此操作的JavaScript。但是无论我尝试什么,我都会得到“ click of undefined

热键功能运行正常,但唯一的问题是单击没有ID的元素(按钮),只有 class

这是我的manifest.json

    {
    "name": "Clicking plugin",
    "description": "Just a simple pluugin",
    "version": "1.0",
    "manifest_version": 2,
    "background": {
        "scripts": ["script.js"]
    },
    "commands": {
    "endorse_cmd": {
      "suggested_key": {
        "default": "Ctrl+X"
      },
      "description": "nothing"
    },
    "claim_cmd": {
      "suggested_key": {
        "windows": "Ctrl+Y"
        },
        "description": "nothing"
        }
    }
}

这是我的script.js

var elems = document.getElementsByClassName('VotingButton VotingButton--upvote btn-white');
var votedUp = document.getElementsByClassName('VotingButton VotingButton--upvote btn-white VotingButton--votedUp');
var elems1 = document.getElementsByClassName('task-skip-submit js-next-question');
var elems2 = document.getElementsByClassName('btn-next-task js-next-question');



chrome.commands.onCommand.addListener(function (command) {
    if (command == "endorse_cmd") {
        alert("X Pressed"); //this works
        if (votedUp.length > 0){ elems1[0].click(); } else if (elems.length > 0){ elems[0].click(); elems1[0].click(); } else if (elems2.length > 0){ elems2[0].click();} else if (elems1.length > 0){ elems1[0].click();} //This is not working
        
        }
        else if (command == "claim_cmd") {
            alert("Y Pressed"); //this works
            var claimBtn = document.getElementsByClassName('btn-blue js-claim-question claim-button');//This is not working
            claimBtn[0].click();//This is not working
        }
});

我要单击的按钮如下所示:

<button class="btn-blue js-claim-question claim-button">Claim questions</button>

基本上,您不能从后台脚本访问activeTab DOM。您需要运行executeScript()将获取信息并模拟点击的代码:

后台脚本:

chrome.tabs.executeScript({
  code: `
    var claimBtn = document.getElementsByClassName('btn-blue js-claim-question claim-button');
    claimBtn[0].click();`
});

manifest.json:

{
  /* other things */
  permissions: [
    "activeTab"
  ]
}

将我为后台脚本提供的代码放入Ctrl+Y命令中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Chrome扩展程序中使用Facebook SDK

来自分类Dev

通过Chrome扩展程序点击页面上的元素

来自分类Dev

Chrome扩展程序-使用JavaScript更改内容

来自分类Dev

AngularJS在Chrome扩展程序中使用eval

来自分类Dev

在Chrome扩展程序中使用细分IO

来自分类Dev

使用Selenium WebDriver自动在chrome:// extensions页面上单击按钮

来自分类Dev

使用Chrome扩展程序运行js文件

来自分类Dev

使用Chrome扩展程序更改DOM内容

来自分类Dev

如何使用Chrome扩展程序影响网站

来自分类Dev

无法使用Chrome扩展程序的Keydown

来自分类Dev

在Chrome扩展程序中使用Google图表

来自分类Dev

Chrome扩展程序后台页面状态

来自分类Dev

扩展程序页面中的Chrome图标

来自分类Dev

使用cronjob定期运行Chrome扩展程序

来自分类Dev

使用AppleScript定位Chrome扩展程序

来自分类Dev

Chrome扩展程序将按钮添加到页面上的每个图像

来自分类Dev

在Chrome扩展程序中使用onClick在页面上添加按钮的正确方法

来自分类Dev

使用DevTools的Chrome扩展程序

来自分类Dev

使用Chrome扩展程序淡出整个页面

来自分类Dev

使用cronjob定期运行Chrome扩展程序

来自分类Dev

Chrome扩展程序-特定页面上的上下文菜单

来自分类Dev

使用扩展程序启动Chrome应用

来自分类Dev

Chrome扩展程序如何响应按钮在页面中的单击?

来自分类Dev

压缩Chrome扩展程序按钮

来自分类Dev

显示Chrome扩展程序的热键是什么?

来自分类Dev

Chrome扩展程序:仅在页面上显示图像(无文本)

来自分类Dev

Chrome扩展程序检测扩展程序内的按钮

来自分类Dev

Chrome扩展程序循环检查按钮错误

来自分类Dev

通过 Chrome 扩展点击页面上的按钮

Related 相关文章

热门标签

归档