phantomjs作用域的问题

发布于 2021-11-20 00:13:26 字数 1195 浏览 858 评论 1

rt.在主文件引入模块a,可是在page.evaluate()方法中不能引入??

var page = require('webpage').create();
var a = require("./a");
var url="https://github.com/";

page.open(url, function(status) {
	page.includeJs("http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js",function(){
		page.evaluate(function() {//page.evaluate之外的变量不能在这里引用吗?如果我想在这里引用外部定义的变量呢,求解
		var tc =document.body.innerText;
		var href=window.location.href;
		var as = document.getElementsByTagName("a");
		var suba=a.finda(href,as);//在这里引用这个方法
		
			$.ajax({
				type: "POST",
				url:"http://127.0.0.1:1337/ajax",
				dataType:"text",
				data:{"url":href,"data":tc,"suba":suba}
			});
	    });
	});
});
//上面文件中引入的模块a代码
function finda(url,as){
		var ha=new Array();
		var len = as.size();
		for(var i=0;i<len;i++){
		var cura=as.eq(i).attr("href");
		if(cura.indexOf("http")=="-1"){
			ha.push(url+cura);
		}else{
		ha.push(cura);
		}
		}
	return ha;
}


exports.finda = finda;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

命硬 2021-11-23 07:11:27

你引用的文档下面就说明了用法,要把参数传递到evaluate里面去,需要做的是

  1. evaluate里面函数需要定义一个参数
  2. 调用evaluate时传递要调用的对象
obj = [1,2,3,4]
page.evaluate(function (arg) {
   // 外面的变量obj被传递进来了,用 arg 这个名字使用
   // do someshing
}, obj);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文