【发布时间】:2015-11-04 14:42:42
【问题描述】:
我正在编写一个控制台应用程序,我在其中使用 Nreco.PhantomJS 来加载数据。这是一个包含带有标记的谷歌地图的网站的报废应用程序。我试图获取的数据在完全加载之前或之后在页面上不可用。数据是从 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()) 函数时,它运行良好并检索到值。但是 PhantomJS 永远不会完成运行代码,我必须关闭应用程序。我的理解是,在上面的代码中,PhantomJS 立即尝试执行 GetLatLang() 函数,而当时它不可用。页面完全加载后有什么方法可以执行这个功能吗?
【问题讨论】:
标签: javascript c# phantomjs