在 PhantomJS 中运行代码之前包含多个 JavaScript? [复制]
Posted
技术标签:
【中文标题】在 PhantomJS 中运行代码之前包含多个 JavaScript? [复制]【英文标题】:Include multiple JavaScript before the code runs in PhantomJS? [duplicate] 【发布时间】:2018-07-04 18:30:32 【问题描述】:我想在 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(
【问题讨论】:
你有什么错误? @AGoranov 只是无法加载多个 JS 文件。这是错误“TypeError: undefined is not a constructor (evalating 'document.getElementById("main-tag").textillate(" Trying to use texillate.js which requires jQuery. @Cerbrus 我的问题是包含多个 JS 文件并且不只注入一个 所以?有什么问题?是什么阻止您使用欺骗目标中描述的方法包含多个文件? @Cerbrus 脚本只是没有加载。你能提供一个可行的例子吗? 【参考方案1】:undefined is not a constructor
表示您正在调用未定义的方法。 jquery.textillate.js
很可能对目标页面不可用,因为从代码示例判断它是一个本地脚本,并且要在 page.evaluate 中使用它,您应该使用 page.injectJs 方法。
还要回答您的另一个问题:有一种更简单的方法可以注入多个脚本。只需将它们全部放在一个捆绑的本地脚本中并注入即可。
【讨论】:
以上是关于在 PhantomJS 中运行代码之前包含多个 JavaScript? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在新窗口中打开链接时,无法在queryselector中打开多个页面。在phantomjs中单击(目标=_空白)
如何获取嵌入在 PhantomJS 运行的 JS 的 HTML 页面结果中的 JSON 对象并将它们传递给 java 代码?