【发布时间】:2020-02-19 23:08:11
【问题描述】:
我正在开发一个自动点击的 Chrome 扩展程序。我的扩展适用于多页应用程序。它可以点击网站上的按钮。但我对这个作为单页应用程序的特定网站有疑问。
我的扩展程序无法使用此 JavaScript 触发按钮点击
function clickButton(){
var submit = document.getElementsByClassName(".class");
submit.click();
}
我的问题是,如何触发单页应用程序的按钮点击?因为似乎使用 .click() 不起作用
更多信息
我的扩展程序的工作方式是单击搜索按钮,它会显示结果。如果有结果,我会做具体的事情。但如果结果为空,我会返回上一页(搜索页面),然后再次点击搜索按钮。而且我的扩展程序无法单击搜索按钮或后退按钮。我的假设是,当我使用 .click() 单击按钮时,网络不会请求显示特定的 HTML 页面。我错了吗?
关于本网站的其他信息
所以这个网站是一个单页应用程序。在我登录这个网站后,它把我带到https://sample.com/page1 - 这是一个家。然后我转到搜索页面(URL 仍然相同,但显示的布局不同,即搜索页面)。在搜索页面,我输入搜索参数,然后点击搜索按钮(网址还是一样,但显示的布局不同,即搜索结果)。所以我猜这些网络的工作方式是每次我点击某个页面时,它都会使用 history.pushState 请求页面布局 - 我猜。所以我想知道是否有办法操纵这个history.pushState?例如,我可以直接转到所需页面,而不是单击后退按钮吗?
【问题讨论】:
-
不看网站代码很难回答,但即使在您提供的 3 行代码中也至少存在 2 个问题: 1、getElementsByClassName 返回一个类似数组的对象,其中 .click() 获胜不行。 2,getElementsByClassName 需要一个类名(不带 .),您似乎使用选择器(带 .)developer.mozilla.org/en-US/docs/Web/API/Document/… 调用它
-
你可以试试this approach
-
我试过了。但同样的结果。它不会点击按钮。我猜,为了防止任何自动化工具,这个网站不允许任何来自任何功能的点击点击标签。
标签: javascript google-chrome google-chrome-extension chromium html5-history