在PhantomJS中运行Javascript自定义函数
本文关键字:Javascript 自定义函数 运行 PhantomJS | 更新日期: 2023-09-27 18:20:28
我正在编写一个控制台应用程序,在其中我使用Nreco.ChantomJS加载数据。这是一个废弃的应用程序,适用于一个包含带有标记的谷歌地图的网站。我试图获得的数据在完全加载之前或之后都无法在页面上获得。数据是从JavaScript函数传递到谷歌地图的简单纬度和经度,不会在页面上呈现。由于我是PhantomJS的新手,所以我不确定如何实现这一点,但我相信这是可以做到的。这个小脚本是由我用c#代码运行的
try
{
string jsContent = "var system = require('system');" +
"var page = require('webpage').create();" +
"page.open('" + url + "', function(status) {" +
"system.stdout.writeLine(GetLatLang());" +
"}"+
"phantom.exit();" +
"});";
phantomJS.RunScript(jsContent, null, null, ms);
}
finally
{
phantomJS.Abort(); // ensure that phantomjs.exe is stopped
}
当我调用控制台选项卡中的Alert(GetLatLang())
函数(在谷歌chrome检查器内部)时,它会运行fines并检索值。然而,PhantomJS从未完成代码的运行,我不得不关闭应用程序。我的理解是,在上面的代码中,PhantomJS立即尝试执行GetLatLang()
函数,而当时它不可用。有没有办法在页面完全加载后执行这个函数?
您需要在页面上下文中而不是在幻影上下文中调用GetLatLang()
函数:
"page.open('" + url + "', function(status) {" +
"console.log(page.evaluate(function(){" +
"return GetLatLang();" +
"}));" +
"}"+
page.evaluate()
是唯一提供对DOM和页面的window
对象的访问的函数。
此外,您的JavaScript存在语法错误。只有一个打开的{
,但有两个关闭的}
。您需要删除"}"+
。