寻找一种使用bookmarklet单击多个元素的简单方法

问题描述 投票:0回答:2

我正在尝试创建一个书签,在不同的网页上执行简单的功能。我们的想法是,它将位于一个易于查找的位置(在书签栏上)并在给定页面上执行“标准功能”。我可以依靠书签来履行其职责,而不是寻找超链接或提交按钮。

作为不使用javascript编码的人,我无法使用书签来处理多个项目/页面。我开始成功使用getElementById函数

javascript:(function () {
var i = document.getElementById("contactSeller").click()
})()

在另一页上,有一个ID为“sndBtn”的按钮。但是,使用第二个ID向代码添加另一个click()函数不起作用。

javascript:(function () {
var i = document.getElementById("contactSeller").click();
var m = document.getElementById("sndBtn").click()
})()

据我所知,这是因为getElementById只能在页面上工作一次。 (删除第一个功能使第二个功能工作)。其他用户已经建议使用CSS或jQuery的递归函数,但我没有运气让它们作为bookmarklet工作。

有人可以帮助构建一个将通过点击列表运行的简单函数吗?能够跟踪超链接,提交表单和单击按钮是很好的,因此它不仅是相同功能的递归脚本。每个页面上的每个元素似乎都有唯一的ID。

链接GetElementByID - Multiple IDs

https://gist.github.com/aseemk/5000668

https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

http://www.dynamicdrive.com/forums/showthread.php?30130-multiple-ID(elements)-inside-document-getElementById(-)

javascript bookmarklet
2个回答
0
投票

您可以拨打getElementById的次数没有限制。当元素不存在时,您可能遇到导致脚本终止的异常。你不能在null对象上调用.click()

这将在点击之前检查元素是否存在:

javascript:(function () {
var i = document.getElementById("contactSeller"); 
if(i){i.click();}
var m = document.getElementById("sndBtn")
if(m){m.click();}
})()

0
投票

做了一个例子和它的工作好,看看。

我认为@Rich Moss写的是正确的,document.getElementById("contactSeller")未定义或点击功能得到了一个扩展,阻止代码继续。

function c(v){
console.log(v)
}

document.getElementById("btn1").click()
document.getElementById("btn2").click()
<input type="button" onclick="c(1)" value="btn1" id="btn1" />

<input type="button" onclick="c(2)" value="btn2" id="btn2" />
© www.soinside.com 2019 - 2024. All rights reserved.