โหลดหน้าเว็บซ้ำอัตโนมัติใน Chrome โดยไม่ต้องใช้ปลั๊กอิน


12

การใช้ปลั๊กอิน TabMixPlus สำหรับ Firefox หรือ Chrome ฉันสามารถคลิกขวาที่หน้าและเลือก "โหลดซ้ำทุก ... " และฉันสามารถเลือกช่วงเวลา

ฉันไม่ต้องการติดตั้งปลั๊กอินเว้นแต่ฉันจะต้องทำจริงๆและฉันรู้ว่าคุณสามารถพิมพ์สิ่งพิเศษลงในแถบที่อยู่ของ Chrome ได้

นี่ทำให้ฉันคิดว่าบางสิ่งบางอย่างเช่นนี้พิมพ์ตรงไปยังที่อยู่อาจใช้งานได้:

javascript:setInterval(window.location.reload(), 2000); //2 secs`

ฉันยังไม่ได้จัดการมัน แต่ก็ยังไม่ต้องการที่จะออกกฎเป็นไปได้

เป็นไปได้ไหม


ทำไมคุณถึงต่อต้านปลั๊กอิน? หากคุณเป็นกังวลเพียงเขียนปลั๊กอินของคุณเองว่าทำสิ่งที่คุณต้องการ
Ramhound

ฉันไม่ได้ต่อต้านปลั๊กอินขออภัยถ้ามันอ่านอย่างนั้น ฉันต้องการเพียงเพื่อเรียนรู้อีกเล็กน้อยเกี่ยวกับความสามารถในแถบที่อยู่ของ Chrome ของ :)
จอน

ทำไมคุณไม่ลองพิมพ์ในแถบที่อยู่?
Toby Allen

ฉันมีให้ดูi haven't managed it yet
จอน

ปัญหาคือเมื่อคุณโทรlocation.reload()และโหลดหน้าเว็บใหม่อีกครั้งตราบใดที่ Chrome เกี่ยวข้องกับการโหลดหน้าใหม่และบริบทนั้นเป็นสิ่งใหม่ทั้งหมด (สิ่งที่คุณพิมพ์ก่อนหน้านี้จะสูญหายไป) ดังนั้นคุณต้องยืนยันรหัสของคุณอย่างใดและให้หน้าเหมือนกันซึ่งเป็นสาเหตุที่โซลูชัน iframe ของคำตอบ
ShreevatsaR

คำตอบ:


13

หลังจาก 6 ปีฉันมีทางออกสำหรับสิ่งนี้!

คำตอบได้แรงบันดาลใจจากคำตอบอื่น ๆ ที่นี่

คำตอบของ Edub ไม่ได้ผลสำหรับฉันมันโหลดหน้าซ้ำแล้วซ้ำอีกและไม่ได้สังเกตsetIntervalพารามิเตอร์ระยะเวลาของ ฉันไม่เข้าใจว่าทำไมคำตอบของ Edub ไม่ทำงานอย่างที่คาดไว้

สิ่งนี้ใช้ได้กับฉันใน Chrome 67:

javascript:document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\"><\/iframe>";reloadTimer = setInterval(function(){ document.getElementById("testFrame").src=document.getElementById("testFrame").src },10000)

เวอร์ชันที่จัดรูปแบบ:

document.getElementsByTagName("body")[0].innerHTML = 
"<iframe id=\"testFrame\" 
        src=\"" + window.location.toString() + "\" 
      style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\">
<\/iframe>";
reloadTimer = setInterval(
    function(){ 
        document.getElementById("testFrame").src=document.getElementById("testFrame").src
    },
    10000
)

สิ่งนี้ทำงานโดยการแทนที่เนื้อหาเอกสารปัจจุบันด้วย iframe ที่ชี้ไปยังตำแหน่งปัจจุบันของหน้าต่าง

จากนั้นทำการเรียก setInterval ซึ่งทำให้เพจโหลดซ้ำบนตัวจับเวลา

วิธีนี้ใช้ได้ดีเช่นเดียวกับบุ๊กมาร์ก ฟังก์ชันเสริมของ setInterval สามารถเรียกใช้โดยคั่นหน้าด้วย:javascript:clearTimer(reloadTimer)

หมายเหตุ:

  • บางไซต์ตรวจพบว่ามีการเข้าถึงผ่าน iframe และพยายามป้องกันการเข้าถึง (เช่นไซต์สแต็ก!)

  • เบราว์เซอร์จะนำส่วนนำหน้าjavascript:เมื่อวางลงในแถบที่อยู่ดังนั้นจึงต้องป้อนด้วยตนเอง อย่างไรก็ตามjavascript:จะไม่ถูกถอดออกหากป้อนผ่านบุ๊กมาร์ก


11

คุณสามารถทำมันผ่านเครื่องมือสำหรับนักพัฒนา Chrome ctrl+shift+jโดยใช้คีย์ผสม โหลดหน้าเว็บที่คุณต้องการตัวอย่างเช่น: http://www.w3schools.com/jsref/dom_obj_frame.aspจากนั้นกดctrl+shift+jเพื่อเปิดเครื่องมือสำหรับนักพัฒนา คลิกขวาที่แท็ก body และเลือกแก้ไขเป็น html แทนที่เนื้อหาด้านใน (ปล่อยให้แท็กและแท็กปิดเหมือนเดิม) ด้วยรายการต่อไปนี้:

<iframe id="testFrame" src="http://www.w3schools.com/jsref/dom_obj_frame.asp" style="position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;" onload="setInterval(document.getElementById('testFrame').contentWindow.location.reload(), 10000);"></iframe>

เพื่อหยุดการแก้ไขในรูปแบบ html คุณสามารถกดescหรือคลิกที่หนึ่งในแท็กนอกแท็กที่คุณกำลังแก้ไข หน้าควรเริ่มโหลดใหม่ทุก ๆ 10 วินาทีคุณสามารถปิดเครื่องมือของนักพัฒนาซอฟต์แวร์ได้หากคุณต้องการและมันจะทำการรีเฟรชต่อไปโดยไม่จำเป็นต้องใช้ปลั๊กอิน :)


ขอบคุณ Justin สิ่งนี้ใช้ได้ดังนั้นฉันจึง upvoted แต่ไม่ใช่คำตอบที่ฉันกำลังมองหาดังนั้นจะปล่อยให้คำถามเปิดด้วยความหวัง :) นอกจากนี้ F12 ไม่ใช่เหรอ
จอน

3

การแก้ปัญหาจาก Justin Buser อีกขั้นตอนหนึ่งนำฉันไปที่:

document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\" onload=\"setInterval(document.getElementById(\'testFrame\').contentWindow.location.reload(), 10000);\"><\/iframe>"

แนวคิดในการฝังไซต์ใน iframe เพื่อให้สามารถโหลดซ้ำได้ทำงานได้ดี (ฉันเดา) ฉันเพิ่งเขียนโค้ดบางส่วนเพื่อให้ร่างกายมีความสุขและแทนที่ innerhtml ด้วย Iframe เป็น url ปัจจุบัน

วิธีนี้เป็นไปได้ที่จะทำบุ๊กมาร์กโค้ด JavaScript บางส่วนและดำเนินการกับไซต์ใด ๆ เพื่อโหลดซ้ำ หวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.