单击该元素,但不会相应地重新加载Page

时间:2014-08-18 05:57:42

标签: javascript jquery html phantomjs

使用phantom JS,我试图单击<li>元素(target_element)并渲染后面加载的页面。单击该元素成功。但是,在渲染时,输出中看不到刷新的页面。我给了足够的等待物品。代码是:

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功能或我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

不,您在点击和渲染之间没有任何等待时间。 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);