首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示来自自定义phantomjs脚本的响应

如何显示来自自定义phantomjs脚本的响应
EN

Stack Overflow用户
提问于 2018-05-28 04:27:34
回答 1查看 209关注 0票数 0

我似乎无法显示来自我的自定义.proc文件的响应。我在ubuntu的laravel 5.6上运行php-phantomjs。我有一个URL端点,用来调用自定义文件,如下所示:

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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‘。

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 15:16:11

PhantomJS在脚本中过早退出。

page.open调用是异步的(谁知道打开url需要多长时间),所以phantom.exit()会在浏览器刚开始打开url之后立即运行。取而代之的是在获取信息后退出PhantomJS,在回调中:

代码语言:javascript
复制
if (status === "success") {

    var contentNeeded = page.evaluate(function () {
        return document.querySelector("h1").outerHTML;
    });

    console.log(contentNeeded);
    phantom.exit();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50556217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档