从PhantomJS调用到injectJS公开变量
我在入门页面中介绍了注入jQuery的示例,效果很好。我在同一个目录中有一个jQuery的本地副本,并执行如下操作从PhantomJS调用到injectJS公开变量,phantomjs,Phantomjs,我在入门页面中介绍了注入jQuery的示例,效果很好。我在同一个目录中有一个jQuery的本地副本,并执行如下操作 if(page.injectJs('jquery.min.js')) { page.evaluate(function(){ //Use jQuery or $ } } if(page.injectJs('myScript.js')) { console.log('myScript injected... I think'); page.evaluate
if(page.injectJs('jquery.min.js')) {
page.evaluate(function(){
//Use jQuery or $
}
}
if(page.injectJs('myScript.js')) {
console.log('myScript injected... I think');
page.evaluate(function() {
doSomething();
});
} else {
console.log('Failed to inject myScript');
}
当我尝试注入自己的脚本时,没有任何函数可供我使用。假设我有一个名为myScript.js的脚本
function doSomething() {
// doing something...
}
我不能使用像…这样的东西
if(page.injectJs('jquery.min.js')) {
page.evaluate(function(){
//Use jQuery or $
}
}
if(page.injectJs('myScript.js')) {
console.log('myScript injected... I think');
page.evaluate(function() {
doSomething();
});
} else {
console.log('Failed to inject myScript');
}
我试过了
window.doSomething = function() {};
及
此外,如果运气不好,还尝试在随后的页面中使用window.doSomething()或document.doSomething()调用它们。evaluate()。以下内容对我有效,可能是应用程序逻辑的其他部分出错:
inject.coffee
page=require('webpage')。create()
page.onConsoleMessage=(msg)->console.log msg
第页“打开”http://www.phantomjs.org“,(状态)->
如果状态为“成功”
page.includeJs“http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js", ->
如果page.js“do.js”
page.evaluate->
title=echoAndReturnTitle('hello')
console.log标题
幻影。退出()
do.coffee
:
window.echoanderturntitle=(arg)->
console.log“回显“#{arg}”
console.log$(“.explainion”).text()
返回文档名称
结果:
> phantomjs inject.coffee
echoing 'hello'
PhantomJS is a headless WebKit with JavaScript API.
It has fast and native support for various web standards:
DOM handling, CSS selector, JSON, Canvas, and SVG.
PhantomJS is created by Ariya Hidayat.
PhantomJS: Headless WebKit with JavaScript API
或者如果您更喜欢JavaScript(它们是自动生成的,有点难看): `inject.js':
//由CoffeeScript 1.3.1生成
(功能(){
var-page;
page=require('webpage')。create();
page.onConsolleMessage=函数(msg){
返回console.log(msg);
};
第页打开(“http://www.phantomjs.org“,功能(状态){
如果(状态==“成功”){
返回页面。包含js(“http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js“,函数(){
if(page.js(“do.js”)){
page.evaluate(函数(){
var标题;
title=echoAndReturnTitle(“你好”);
返回控制台日志(标题);
});
返回phantom.exit();
}
});
}
});
}).打电话(这个);
do.js
:
//由CoffeeScript 1.3.1生成
(功能(){
window.echoAndReturnTitle=函数(arg){
log(“回显“+arg+””);
console.log($(“.explaution”).text();
返回文件.title;
};
}).打电话(这个);
谢谢,这对我帮助很大!