Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当您必须等待第二个按钮出现时,如何重复单击两个按钮?_Javascript - Fatal编程技术网

Javascript 当您必须等待第二个按钮出现时,如何重复单击两个按钮?

Javascript 当您必须等待第二个按钮出现时,如何重复单击两个按钮?,javascript,Javascript,我正在编写一个简单的脚本,该脚本循环遍历页面上的所有元素,并在普通JavaScript中共享它们。这是我到目前为止所拥有的 var buttons=document.getElementsByClassName('share-gray-large'); 对于(var i=0;i这将从最后一个共享按钮单击到第一个共享按钮,排除电子邮件共享,并确保允许浏览器单击/打开多个弹出窗口 function waitForElement(selector) { var element = docume

我正在编写一个简单的脚本,该脚本循环遍历页面上的所有元素,并在普通JavaScript中共享它们。这是我到目前为止所拥有的

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();