【问题标题】:I want to auto click a button on the website as the extension is clicked单击扩展程序时,我想自动单击网站上的按钮
【发布时间】:2018-06-01 02:18:02
【问题描述】:

目标-当用户点击特定页面上的 chrome 扩展时,它会自动点击该网站页面上的特定按钮。

我尝试了以下方法来生成自动点击,但它们都不起作用。

我从 content-script.js 获取 background.js 中的 DOM 并运行以下命令(在后台页面中将这些命令用于其他目的,同样的错误在内容脚本中运行时)。

$(html).find(".button").click();

$(html).find('#button').addEventListener('click', function() { 警报(“你好”); });

button.addEventListener('click', function() { 警报(“你好”); });

它要么给了我错误,要么没有工作。

第一个命令出错-

jquery.min.js:4 拒绝执行内联事件处理程序,因为它 违反以下内容安全策略指令:“script-src 'self' blob:文件系统:chrome-extension-resource:“。要么 'unsafe-inline' 关键字、哈希 ('sha256-...') 或随机数 ('nonce-...') 是启用内联执行所必需的。

我也尝试在我的 ma​​nifest.json 中添加它,但错误没有变化-

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

请帮助我。谢谢。

【问题讨论】:

  • I am getting the DOM in background.js from the content-script.js and running following commands. 为什么?只需在内容脚本中运行该代码即可。
  • 没关系,内容脚本中也有同样的错误。

标签: javascript jquery dom google-chrome-extension content-security-policy


【解决方案1】:

您可以在后台脚本中尝试此代码:

chrome.browserAction.onclicked.addListener(tab => {
    chrome.tabs.executeScript(tab, {code:
        `var theButton = document.querySelector("button");
         if (theButton) theButton.click();`});
});

当您的扩展程序的图标 (browser action) 被点击时,它将点击活动网页的第一个按钮。如果您需要特定按钮,请在 document.querySelector 调用中优化选择器。

【讨论】:

  • .click() 仅在内容脚本中起作用吗?
  • 它适用于任何页面,但您需要清单中的tabs(或至少activeTab)权限。顺便说一句,在activeTab 的文档中,您还有另一个可以使用的代码示例。
【解决方案2】:

对于自动点击按钮,您可以使用 jquery 的 trigger() 方法,如下所示:

$( "#foo" ).on( "click", function() { 
alert( $( this ).text() );});
$( "#foo" ).trigger( "click" );

希望对你有帮助:)

【讨论】:

  • 同样的错误 - '拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src'self''unsafe-eval'”。启用内联执行需要“unsafe-inline”关键字、哈希 ('sha256-...') 或随机数 ('nonce-...')。'
猜你喜欢
  • 2018-09-07
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多