我正在尝试创建一个书签,在不同的网页上执行简单的功能。我们的想法是,它将位于一个易于查找的位置(在书签栏上)并在给定页面上执行“标准功能”。我可以依靠书签来履行其职责,而不是寻找超链接或提交按钮。
作为不使用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
您可以拨打getElementById
的次数没有限制。当元素不存在时,您可能遇到导致脚本终止的异常。你不能在null对象上调用.click()
。
这将在点击之前检查元素是否存在:
javascript:(function () {
var i = document.getElementById("contactSeller");
if(i){i.click();}
var m = document.getElementById("sndBtn")
if(m){m.click();}
})()
做了一个例子和它的工作好,看看。
我认为@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" />