Javascript 当您必须等待第二个按钮出现时,如何重复单击两个按钮?
我正在编写一个简单的脚本,该脚本循环遍历页面上的所有元素,并在普通JavaScript中共享它们。这是我到目前为止所拥有的Javascript 当您必须等待第二个按钮出现时,如何重复单击两个按钮?,javascript,Javascript,我正在编写一个简单的脚本,该脚本循环遍历页面上的所有元素,并在普通JavaScript中共享它们。这是我到目前为止所拥有的 var buttons=document.getElementsByClassName('share-gray-large'); 对于(var i=0;i这将从最后一个共享按钮单击到第一个共享按钮,排除电子邮件共享,并确保允许浏览器单击/打开多个弹出窗口 function waitForElement(selector) { var element = docume
var buttons=document.getElementsByClassName('share-gray-large');
对于(var i=0;i这将从最后一个共享按钮单击到第一个共享按钮,排除电子邮件共享,并确保允许浏览器单击/打开多个弹出窗口
function waitForElement(selector) {
var element = document.querySelectorAll(selector);
if (element.length) {
if (shareLinkCount == 999) { // set to real number of elements
shareLinkCount = element.length;
}
shareLinkCount--;
var shareElement = element[shareLinkCount];
if(shareElement.textContent != "Email") // Do not click email share
element[shareLinkCount].click();
if (shareLinkCount) { // not 0
setTimeout(clickShareButton, 500);
}
else{
alert('Click Finished');
document.body.click();
}
} else {
setTimeout(waitForElement, 500, selector);
}
}
function clickShareButton() {
var button = document.querySelector('.share-gray-large');
button.click();
waitForElement('internal-share__link');
}
var shareLinkCount = 999; // dummy number
clickShareButton();
这是一个对我有效的答案。大部分解决方案都归功于我。因为我没有将链接发布到网站,所以我能够测试它并修改他们的解决方案以满足我的需要
函数waitForElement(选择器){
var元素=document.querySelector(选择器);
if(元素){
共享链接计数--;
元素。单击();
如果(shareLinkCount){//不是0
设置超时(单击共享按钮,500);
}
否则{
元素。单击();
警报(“单击完成”);
}
}否则{
设置超时(waitForElement,500,选择器);
}
}
函数clickShareButton(){
document.querySelectorAll('.share gray large')[shareLinkCount]。单击();
waitForElement(“内部共享链接”);
}
var shareLinkCount=document.querySelectorAll('.share gray large')。长度-1;
单击共享按钮();
Hi!您的问题看起来很有趣:)为了进一步改进您的问题,我建议您也发布html代码。否则其他用户无法测试您的代码。嘿,非常感谢您的解决方案!它没有立即工作,但我调整了它,它就像一个魅力。唯一的一件事是,它碰巧分享了其他所有的帖子。你知道为什么会这样吗?我将发布我的更新代码作为答案,因为作为注释发布太长。请更新选择器以仅匹配您想要的帖子,例如.parentClass.share gray large
,您能告诉我们什么是url吗?更新:我稍微修改了代码,它工作正常。我会把它贴在下面。有几件事需要注意:我想减少类名为share gray large
而不是internal-share\u link
的内容。另外,如果我调用clickShareButton()
并且元素
变量为null,那么它会在第三行出错,因为null没有长度。我清理了shareLinkCount
周围的代码,查询了我想要查询的内容,并修复了第3行,它工作得非常好。非常感谢你!很高兴听你这么说,不客气。
function waitForElement(selector) {
var element = document.querySelectorAll(selector);
if (element.length) {
if (shareLinkCount == 999) { // set to real number of elements
shareLinkCount = element.length;
}
shareLinkCount--;
var shareElement = element[shareLinkCount];
if(shareElement.textContent != "Email") // Do not click email share
element[shareLinkCount].click();
if (shareLinkCount) { // not 0
setTimeout(clickShareButton, 500);
}
else{
alert('Click Finished');
document.body.click();
}
} else {
setTimeout(waitForElement, 500, selector);
}
}
function clickShareButton() {
var button = document.querySelector('.share-gray-large');
button.click();
waitForElement('internal-share__link');
}
var shareLinkCount = 999; // dummy number
clickShareButton();