นี่เป็นคำถามเก่า แต่เนื่องจากฉันกำลังมองหาการโหลดแบบเต็มหน้า แต่สำหรับ Spookyjs (ที่ใช้ casperjs และ phantomjs) และไม่พบวิธีการแก้ปัญหาของฉันฉันได้สร้างสคริปต์ของตัวเองด้วยวิธีการเดียวกันกับผู้ใช้ deemstone สิ่งที่วิธีการนี้ทำคือตามระยะเวลาที่กำหนดหากหน้าเว็บไม่ได้รับหรือเริ่มร้องขอใด ๆ ก็จะสิ้นสุดการดำเนินการ
บนไฟล์ casper.js (หากคุณติดตั้งแบบโกลบอลพา ธ จะเป็นสิ่งที่ต้องการ /usr/local/lib/node_modules/casperjs/modules/casper.js) เพิ่มบรรทัดต่อไปนี้:
ที่ด้านบนของไฟล์ที่มี vars ทั้งหมด:
var waitResponseInterval = 500
var reqResInterval = null
var reqResFinished = false
var resetTimeout = function() {}
จากนั้นภายในฟังก์ชั่น "createPage (casper)" หลัง "var หน้า = ต้องการ ('หน้าเว็บ') สร้าง ();" เพิ่มรหัสต่อไปนี้:
resetTimeout = function() {
if(reqResInterval)
clearTimeout(reqResInterval)
reqResInterval = setTimeout(function(){
reqResFinished = true
page.onLoadFinished("success")
},waitResponseInterval)
}
resetTimeout()
จากนั้นภายใน "page.onResourceReceived = ฟังก์ชั่น onResourceReceived (ทรัพยากร) {" ในบรรทัดแรกเพิ่ม:
resetTimeout()
ทำเช่นเดียวกันกับ "page.onResourceRequested = function onResourceRequested (requestData, request) {"
ในที่สุดใน "page.onLoadFinished = ฟังก์ชั่น onLoadFinished (สถานะ) {" ในบรรทัดแรกเพิ่ม:
if(!reqResFinished)
{
return
}
reqResFinished = false
หวังว่าอันนี้จะช่วยคนที่มีปัญหาเหมือนฉัน วิธีนี้ใช้สำหรับ casperjs แต่ใช้ได้กับ Spooky โดยตรง
โชคดี !