phantomjs中的JQuery包含不起作用

phantomjs中的JQuery包含不起作用,phantomjs,Phantomjs,我的代码是: var url='1〕https://search.yahoo.com/', 页面=新网页(), fs=要求('fs'); page.settings.userAgent='Mozilla/5.0(平台;rv:geckoversion)Gecko/geckotrail-appname/appversion'; page.onConsolleMessage=函数(msg){ 控制台日志(msg); }; 页面打开(url、函数(状态){ 如果(状态!=“成功”) { console.

我的代码是:

var url='1〕https://search.yahoo.com/',
页面=新网页(),
fs=要求('fs');
page.settings.userAgent='Mozilla/5.0(平台;rv:geckoversion)Gecko/geckotrail-appname/appversion';
page.onConsolleMessage=函数(msg){
控制台日志(msg);
};
页面打开(url、函数(状态){
如果(状态!=“成功”)
{
console.log('无法访问网络');
phantom.exit();
返回;
}
其他的
{
第页,包括https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js“,函数()
{
page.evaluate(函数()
{
$('yschsp').val(“提问”);
$(“.sbb”)。单击();
});   
page.onLoadFinished=功能(状态){
var content=page.content;
fs.write('1.html',content,'w');
console.log($('#link-1').val());
phantom.exit();
};
});
}
});
JQuery在
页面中工作得非常好。evaluate
但在
页面中不工作。onLoadFinished
。我犯了一个错误

无法获取变量:$


这意味着在function
page.onLoadFinished
jquery中没有工作。但是我不明白为什么?

因为jQuery被加载到页面上下文中,所以只能在那里使用。与页面上下文交互的唯一函数是(以及其他
evaluate
函数)

所以这条线

console.log($('#link-1').val());
必须位于
evaluate
回调中。由于您有一个
page.onConsolleMessage
事件处理程序,因此您将从页面上下文接收控制台消息

另一件事是在页面加载后添加
页面.onLoadFinished
事件处理程序没有任何用处。您可以删除围绕代码的处理程序,因为调用
page.open
回调时页面加载完成


如果尚未加载
#link-1
,则应在静态超时(
setTimeout
)后记录该值,或使用