javascript - 使用 Javascript 为页面上的多个按钮启动 onClick() 事件
问题描述
我发现了一些关于类似主题的文章,但不幸的是,解决方案不起作用。如果那是我的错误,请原谅我。
背景 我有一位客户正在从一个基于 Web 的 pdf 文档库提供商迁移到另一个。除了我们进入并单击每个文件的下载之外,当前的提供商无法导出所有文件。页面上有一个所有文档的列表,每个文档旁边都有下载按钮。
我尝试使用 Google Chrome 中的控制台编写脚本来执行此操作。
代码 所有下载按钮的id名称结构类似如下,其中数字递增:
id="mainForm:documentList:0:j_id_4d"
id="mainForm:documentList:1:j_id_4d"
id="mainForm:documentList:2:j_id_4d"
这是一个示例按钮:
<button id="mainForm:documentList:0:j_id_4d" name="mainForm:documentList:0:j_id_4d" type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="window.open('api/internal/documents/619c342f-e006-423e-b45b-43db822bd193','_self')" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Download</span></button>
我编写了这段代码来查找所有与此匹配的按钮:
var buttons = document.querySelectorAll('[id$="_id_4d"]');
我可以看到按钮填充了所有正确的按钮。
当我使用此循环遍历所有按钮以启动 onclick 事件时,只有第一个 onclick 事件会启动下载。为了调试,我还在 for 循环中添加了一个 if 条件来测试特定索引是否会启动它的 onclick 下载事件(比如当 i 为 2 时)并且该 pdf 将下载。
for (var i = 0; i < buttons.length; i++) {
buttons[i].click();
}
我还可以在网络控制台中看到第一个文件显示状态为 200,其他文件显示已取消。
一些文章指出需要实现事件委托或侦听,我尝试过但也没有成功。我不再是编程人员,而是高级用户。任何见解都非常感谢。
非常感谢您!斯蒂芬
解决方案
问题是按钮的 window.open() 中的“_self”。
当我删除所有对 _self 的引用时,文件下载完美。
谢谢散光!
推荐阅读
- python - 似乎无法发现如何向 Pygame 添加碰撞
- docker - 如何从容器外部调整/编辑/添加/更改 kafka docker 容器参数
- java - Java中的向上转换/向下转换
- firebase - Firebase/Google 分析 28 天用户数不匹配 `session_start` 28 天用户数
- java - 如何在 Java 中捕获异常并继续处理?
- python - 无法定位元素://*[@id="US-6"] with xpath
- python - 颜色图不适用于 scipy.griddata 生成的图
- c++ - 基于宏传入字符串的条件编译
- nginx - 为什么会发生“请求实体太大”的错误?
- google-tag-manager - 谷歌标签管理器数据层永远不会被清除