Can not evaluate jquery function in phantomjs

南笙酒味 提交于 2020-01-06 19:36:51

问题


I'd like to build a phantomjs broker service which embed with jquery and accept url and javascript code.

I write a example work well:

var webPage = require('webpage');
var page = webPage.create();

page.onInitialized = function() {
    page.injectJs('js_lib/jquery.min.js');
    // page.includeJs('http://cdn.bootcss.com/jquery/2.1.4/jquery.min.js');
    console.log('running document-start script.');
};

page.open("http://example.com", function(status) {
    if ( status === "success" ) {
        // var title = page.evaluateJavaScript('$(title).text()');
        var title = page.evaluate(function() {
            return $("title").text();
        });
        console.log(title);
    }
    phantom.exit();
});

To achieve my purpose, need to use page.evaluateJavaScript('$("title").text()'); Because I'd like to pass {'url':somesite.com, 'js':'$("title").text()'} to this service.

Then I switch code to page.evaluateJavaScript:

page.open("http://example.com", function(status) {
    if ( status === "success" ) {
        var title = page.evaluateJavaScript('$("title").text()');
        console.log(title);
    }
    phantom.exit();
});

got:

$ phantomjs test.js
running document-start script.
ReferenceError: Can't find variable: title

  phantomjs://webpage.evaluate():1 in global code
  :0 in evaluateJavaScript
  test.js:20
  :285 in _onPageOpenFinished
null

回答1:


I solve it!

Don't write as page.evaluateJavaScript('$(title).text()');

Need use function {} to wrap the code.

var webPage = require('webpage');
var page = webPage.create();

page.onInitialized = function() {
    page.injectJs('js_lib/jquery.min.js');
    // page.includeJs('http://cdn.bootcss.com/jquery/2.1.4/jquery.min.js');
    console.log('running document-start script.');
};


page.open("http://example.com", function(status) {
    if ( status === "success" ) {
        var title = page.evaluateJavaScript('function() { return $("title").text();}');
        console.log(title);
    }
    phantom.exit();
});


来源:https://stackoverflow.com/questions/34606652/can-not-evaluate-jquery-function-in-phantomjs

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!