gpt4 book ai didi

javascript - 无法使用 Chrome 扩展程序单击按钮,但可以在开发人员工具中单击

转载 作者:行者123 更新时间:2023-11-28 18:46:16 24 4
gpt4 key购买 nike

我正在尝试创建一个 Chrome 扩展程序,其唯一目的是点击 YouTube 视频的“赞”按钮。然后,我可以将扩展名映射到快捷键并按 Alt-L或者喜欢该视频的东西。

我使用开发人员工具找到了按钮的 XPath。

所以,我在扩展中单击按钮的 JavaScript 代码是这样的:

var btn = document.evaluate('//*[@id="watch8-sentiment-actions"]/span/span[1]/button',document, 
null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0);
console.log(btn);

console.log("About to click like");
btn.click();
console.log("Just clicked like");

document.evaluate()实际上找到了按钮。在 Chrome 开发者工具的控制台中,我看到了输出:

<button (all the other button details are printed)...>...</button>
About to click like
Just clicked like

但是,它实际上并没有点击按钮。

但是,如果我在开发人员工具的控制台中执行完全相同的代码,它实际上会单击该按钮。

有人知道为什么它可以在开发人员工具的控制台中工作,但不能在扩展中工作?

此外,我下载了一个名为 Custom JavaScript for Websites 的扩展程序。 ,它将 JavaScript 代码注入(inject)网站。我得到了与从扩展执行 JavaScript 相同的结果(正确的输出,但实际上没有单击按钮)。

编辑:

由于我无法发布自己问题的答案 - 对于遇到类似问题的 future 读者,您只需向元素添加一个事件处理程序,然后才能调用 click() .

工作代码是这样的:

// Get the element to click
var btn = document.evaluate('//*[@id="watch8-sentiment-actions"]/span/span[1]/button',document,
null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0);
console.log(btn);

// Attach an event handler to the button
btn.addEventListener('click', function myClick(){
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
});

// Click the button
console.log("About to click like");
btn.click();
console.log("Just clicked like");

最佳答案

可能只有 IE 和 Firefox 有 click() 函数。有一种方法可以通过发送 MouseEvent 来发生点击事件:

var button = document.getElementById("foo_button");
var e = document.createEvent("MouseEvents");
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false,
false, false, false, 0, null);
button.dispatchEvent(e);

关于javascript - 无法使用 Chrome 扩展程序单击按钮,但可以在开发人员工具中单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com