Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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_Jquery_Html_Phantomjs - Fatal编程技术网

Javascript 元素被单击,但页面不会相应地重新加载

Javascript 元素被单击,但页面不会相应地重新加载,javascript,jquery,html,phantomjs,Javascript,Jquery,Html,Phantomjs,使用phantom JS,我试图单击一个元素(target\u元素),并呈现在它之后加载的页面。元素已成功单击。但是,在呈现时,在输出中看不到刷新的页面。我已经给了足够的等待项目。代码是: page.open(address, function (status) { if (status !== 'success') { console.log('Unable to load the address!'); phantom.exit(); } el

使用phantom JS,我试图单击一个
  • 元素(target\u元素),并呈现在它之后加载的页面。元素已成功单击。但是,在呈现时,在输出中看不到刷新的页面。我已经给了足够的等待项目。代码是:

    page.open(address, function (status) {
        if (status !== 'success') {
            console.log('Unable to load the address!');
            phantom.exit();
        } else {
            window.setTimeout(function () {
                page.evaluate(function() {
                    document.getElementById('custom_filters').style.visibility = "hidden";
                    var a = document.getElementById('target_element');
                    var e = document.createEvent('MouseEvents');
                    e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    console.log(a.dispatchEvent(e));
                    waitforload = true;
                });
                page.render(output);
                phantom.exit();
            }, waitTime);
        }
    });
    

    这是否意味着事件没有触发JS函数,或者我在这里做错了什么?

    不,在单击和渲染之间没有任何等待时间。
    setTimeout
    只需在需要延迟的调用周围

    page.evaluate(function() {
        document.getElementById('custom_filters').style.visibility = "hidden";
        var a = document.getElementById('target_element');
        var e = document.createEvent('MouseEvents');
        e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        console.log(a.dispatchEvent(e));
        waitforload = true;
    });
    window.setTimeout(function () {
        page.render(output);
        phantom.exit();
    }, waitTime);