我似乎无法显示来自我的自定义.proc文件的响应。我在ubuntu的laravel 5.6上运行php-phantomjs。我有一个URL端点,用来调用自定义文件,如下所示:
public function getLinks()
{
$location = base_path('phantom-scripts');
$serviceContainer = ServiceContainer::getInstance();
$procedureLoader = $serviceContainer->get('procedure_loader_factory')
->createProcedureLoader($location);
$client = Client::getInstance();
$client->getEngine()->setPath(\Config::get('phantomPath'));
$client->setProcedure('my_procedure');
$client->getProcedureLoader()->addLoader($procedureLoader);
$request = $client->getMessageFactory()->createRequest();
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
dd($response->getContent());
}这是.proc文件
var page = require('webpage').create();
var fs = require('fs');
console.log("loading...");
var url = 'http://www.example.com';
page.open(url, function (status) {
if (status === "success") {
var contentNeeded = page.evaluate(function () {
return document.querySelector("h1").outerHTML;
});
console.log(contentNeeded);
}
});
phantom.exit();我想在我的浏览器上显示'contentNeeded‘。
发布于 2018-05-28 15:16:11
PhantomJS在脚本中过早退出。
page.open调用是异步的(谁知道打开url需要多长时间),所以phantom.exit()会在浏览器刚开始打开url之后立即运行。取而代之的是在获取信息后退出PhantomJS,在回调中:
if (status === "success") {
var contentNeeded = page.evaluate(function () {
return document.querySelector("h1").outerHTML;
});
console.log(contentNeeded);
phantom.exit();
}https://stackoverflow.com/questions/50556217
复制相似问题