我可以在PhantomJS中运行网页的JavaScript功能吗?

时间:2015-12-21 18:33:57

标签: javascript phantomjs

当我将鼠标悬停在网页中的图片上时,会在状态栏javascript:main.somefunction("arg1","arg2","arg3")中显示JavaScript函数。是否可以在网页的上下文中运行该功能并使用PhantomJS渲染结果?

1 个答案:

答案 0 :(得分:0)

如果您有

等元素
<a href='javascript:main.somefunction("arg1","arg2","arg3")'>
    <img src='someImage.jpg'>
</a>

然后你应该在状态栏中看到链接的URI。由于页面必须知道main对象以便在其上调用函数,因此main必须是全局范围内的对象(在window对象上)。您可以在页面上下文中调用main.somefunction("arg1","arg2","arg3")window.main.somefunction("arg1","arg2","arg3")

如果函数异步更改页面,则必须等待更改。可以使用setTimeout()完成静态延迟。如果您需要等待特定条件,则可以使用waitFor() function from the examples directory

page.open(url, function(status){
    if (status === "fail") {
        console.log("Load failed");
        phantom.exit(1);
        return;
    }

    page.evaluate(function(){
        main.somefunction("arg1","arg2","arg3")
    });

    setTimeout(function(){
        page.render("screenshot.png");
        phantom.exit();
    }, 3000); // 3 seconds delay
});