Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PhantomJS调用到injectJS公开变量_Phantomjs - Fatal编程技术网

从PhantomJS调用到injectJS公开变量

从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

我在入门页面中介绍了注入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(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;
};
}).打电话(这个);

谢谢,这对我帮助很大!