对于带有查询字符串

时间:2017-03-08 20:53:46

标签: phantomjs

我正在使用PhantomJS 2.1.1打开本地html文件。我想使用查询字符串将值传递给页面。

这是我的代码:

var args = require('system').args;
args.forEach(function(arg, i) 
{
    console.log(i+'::'+arg);
});

var page = require('webpage').create();
page.viewportSize = { width: 1000, height: 800 };

page.onConsoleMessage = function(msg)
{
  console.log(msg);
}

//var postBody = 'dataLoc='+args[2];
//page.open('///'+args[1], 'POST', postBody, function(status)

//page.open('///'+args[1]+'?dataLoc='+args[2], function(status)
page.open('///'+args[1], function(status)
{
    console.log("Status: " + status);

    var url = page.url;
    console.log('URL: ' + url);

    var clipRect = page.evaluate(function()
    {
       return document.querySelector("div#map").getBoundingClientRect();
    });
});

我留下了注释掉的线条来展示我的尝试。使用页面文件名的传入参数打开页面(这是未注释掉的)。打开页面作为POST工作,但是当我查看window.location.search时,页面上的查询字符串不可用。使用查询字符串作为URL的一部分打开页面将彻底失败。如果我直接在浏览器中打开带有查询字符串的URL,那么当我登录到控制台时,我会在window.location.search中看到它。

当我尝试将查询字符串直接放在url中时,我在控制台上遇到的错误是:

C:\phantomjs-2.1.1-windows\bin>phantomjs.exe .\public\openPagePhantomJS.js c:/phantomjs-2.1.1-windows/bin/public/testHeatMap.html testParam
0::.\public\openPagePhantomJS.js
1::c:/phantomjs-2.1.1-windows/bin/public/testHeatMap.html
2::testParam
Status: fail
URL:
ERROR: TypeError: null is not an object (evaluating 'document.querySelector("div#map").getBoundingClientRect')
TRACE:
 -> undefined: 2
 -> : 3

  phantomjs://code/openPagePhantomJS.js:49 in onError

因此,该页面根本不会被实际加载。如果你做到这一点,谢谢。对我来说有什么指针?我对PhantomJS的经验水平很低。

0 个答案:

没有答案