在PhantomJS中运行代码之前包含多个JavaScript?

时间:2018-01-25 13:30:00

标签: javascript jquery node.js phantomjs

我想在PhantomJS中包含多个javascript。 page.includeJS / page.injectJS没有显示包含多个脚本的选项。你能为它提供一个有效的例子吗?

代码:

page.open('index.html', function (openStatus) {
  console.log("OPen Status is "+openStatus)
  if(openStatus == 'success') {
    page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', function(jStatus) {
      console.log("Jquery status: "+jStatus)
      (page.includeJs('jquery.textillate.js', function(tStatus) {
        console.log("Text status: "+tStatus)
        (page.evaluate(function () {
          var tag = document.getElementById("main-tag")
          tag.innerHTML = "Hello World"
          document.getElementById("main-tag").textillate({ 
            maxDisplayTime: 2000,
            in: { effect: 'fadeInUp',
            delay: 7000 } 
          });
          console.log('Textilate is: '+tag) 
        }))
      }))
    })
    // setInterval(function() {
    //   page.render('/dev/stdout', { format: "png" });
    //   if( frames == 0 ){
    //       phantom.exit();
    //   }
    //   frames--;
    // }, 40);
  }
});

错误: undefined不是构造函数(评估' document.getElementById(" main-tag")。textillate({

1 个答案:

答案 0 :(得分:-1)

undefined is not a constructor表示您正在调用未定义的方法。最有可能jquery.textillate.js对目标页面不可用,因为根据代码samle来判断它是一个本地脚本,并且要在page.evaluate中使用它,你应该使用page.injectJs方法。

还要回答你的另一个问题:注入多个脚本有一种更简单的方法。只需将它们全部放在一个捆绑的本地脚本中并注入即可。