请问,为什么 puppeteer 向页面注入 jquery 代码, jquery 却不能立即起作用?

2019-07-18 10:18:29 +08:00
 hgjian

const puppeteer = require('puppeteer');

void(async () => {
	
		const browser = await puppeteer.launch({
			headless: false,
			devtools: true
		});
		
		const page = await browser.newPage();
		
		const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3835.0 Safari/537.36";  //  UserAgent   ;
		
		await Promise.all ( [
			page.setUserAgent ( UA ) , 		
			page.setJavaScriptEnabled ( true ) ,	//  允许执行 js 脚本										
		] ) ;  
		
		await page.goto( "http://www.gewara.com/" , { waitUntil : "networkidle0" ,  timeout : 3600000 } ) ;		
		
		await page
			.mainFrame()
			.addScriptTag({
			url: 'https://code.jquery.com/jquery-3.4.1.min.js'
		});
		
		await page.waitFor(2000);
		
		page.on( 'console' , msg => console.log( "var result = await page.evaluate( ( ) =>{  ***  函数内的 console.log:" , msg.text() ) );		
		
		const result = await page.evaluate(() => {
				const watchDog = ( window.$ !== undefined );
				console.log( "window.$ !== undefined    JQ:" + watchDog ) ;  //  应该显示  true ;实际测试却显示  false ;但是,浏览器运行打开网页后,在控制面板测试,就显示为 true 了 ;	  
				return 
		});
		
		console.log(result);
		
})();
6467 次点击
所在节点    Node.js
27 条回复
shinpei
2019-07-18 21:03:17 +08:00
@hgjian 我的意思是把
if ( !noGlobal ) {
window.jQuery = window.$ = jQuery;
}
直接写成
window.jQuery = window.$ = jQuery;
hgjian
2019-07-18 21:05:25 +08:00
@shinpei 刚刚试过,好像不行
hgjian
2019-07-18 21:15:32 +08:00
@shinpei 搞定了,
await page.addScriptTag({
path: './node_modules/jquery/dist/jquery.js',
});
应该放在 page.goto 的后面,就可以了

谢谢啊
shinpei
2019-07-18 21:40:27 +08:00
@hgjian 不客气
123s
2019-07-19 14:34:25 +08:00
根本不需要 jq 吧
xuyl
2019-07-26 14:22:19 +08:00
cheerio 就是服务端的 jQuery
hgjian
2019-07-26 23:32:09 +08:00
@xuyl 了解了,谢谢啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/584021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX