คำถามติดแท็ก browser-history

13
จะรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงของประวัติผ่าน history.pushState ได้อย่างไร?
ดังนั้นตอนนี้ที่ HTML5 แนะนำhistory.pushStateให้เปลี่ยนประวัติเบราว์เซอร์เว็บไซต์เริ่มใช้สิ่งนี้ร่วมกับ Ajax แทนที่จะเปลี่ยนตัวระบุส่วนของ URL onhashchangeน่าเศร้าที่ว่าหมายความว่าสายที่ไม่สามารถตรวจสอบอีกต่อไปโดย คำถามของฉันคือ:มีวิธีที่เชื่อถือได้ (แฮก?;)) เพื่อตรวจสอบเมื่อเว็บไซต์ใช้history.pushState? ข้อมูลจำเพาะไม่ได้ระบุอะไรเกี่ยวกับเหตุการณ์ที่เกิดขึ้น (อย่างน้อยฉันก็ไม่พบอะไรเลย) ฉันพยายามสร้างซุ้มและแทนที่window.historyด้วยวัตถุ JavaScript ของตัวเอง แต่มันก็ไม่มีผลอะไรเลย คำอธิบายเพิ่มเติม:ฉันกำลังพัฒนาโปรแกรมเสริมของ Firefox ที่ต้องการตรวจจับการเปลี่ยนแปลงเหล่านี้และดำเนินการตามนั้น ฉันรู้ว่ามีคำถามคล้ายกันเมื่อไม่กี่วันที่ผ่านมาที่ถามว่าการฟังเหตุการณ์ DOMบางอย่างจะมีประสิทธิภาพหรือไม่ แต่ฉันก็ไม่เชื่อใจเพราะเหตุการณ์เหล่านี้สามารถสร้างขึ้นได้ด้วยเหตุผลหลายประการ ปรับปรุง: นี่คือ jsfiddle (ใช้ Firefox 4 หรือ Chrome 8) ที่แสดงว่าonpopstateไม่ถูกเรียกเมื่อpushStateมีการเรียก (หรือฉันทำสิ่งผิดปกติหรือไม่รู้สึกฟรีเพื่อปรับปรุง!) อัปเดต 2: ปัญหา (ด้าน) อีกอย่างwindow.locationคือไม่ได้รับการอัปเดตเมื่อใช้pushState(แต่ฉันได้อ่านเกี่ยวกับสิ่งนี้ที่นี่แล้วดังนั้นฉันคิดว่า)

4
คุณสามารถใช้การนำทางแฮชโดยไม่ส่งผลต่อประวัติได้หรือไม่?
ฉันกลัวว่ามันอาจจะเป็นไปไม่ได้แต่จะมีวิธีเปลี่ยนค่าแฮชของ URL โดยไม่ทิ้งรายการไว้ในประวัติของเบราว์เซอร์และไม่ต้องโหลดซ้ำได้หรือไม่? หรือทำเทียบเท่า? เท่าที่เฉพาะเจาะจงไปฉันกำลังพัฒนาการนำทางแฮชขั้นพื้นฐานตามแนวของ: //hash nav -- works with js-tabs var getHash = window.location.hash; var hashPref = "tab-"; function useHash(newHash) { //set js-tab according to hash newHash = newHash.replace('#'+hashPref, ''); $("#tabs li a[href='"+ newHash +"']").click(); } function setHash(newHash) { //set hash according to js-tab window.location.hash = hashPref + newHash; …

5
ป้องกันไม่ให้ผู้ใช้เห็นหน้าที่ปลอดภัยที่เยี่ยมชมก่อนหน้านี้หลังจากออกจากระบบ
ฉันมีข้อกำหนดว่าผู้ใช้ปลายทางไม่ควรกลับไปที่หน้าที่ถูก จำกัด หลังจากออกจากระบบ / ออกจากระบบ แต่ในปัจจุบันผู้ใช้สามารถทำได้โดยใช้ปุ่มย้อนกลับของเบราว์เซอร์ไปที่ประวัติเบราว์เซอร์หรือแม้กระทั่งป้อน URL ซ้ำในแถบที่อยู่ของเบราว์เซอร์ โดยพื้นฐานแล้วฉันต้องการให้ผู้ใช้ปลายทางไม่สามารถเข้าถึงเพจที่ถูก จำกัด ได้ไม่ว่าจะด้วยวิธีใดก็ตามหลังจากออกจากระบบ ฉันจะทำสิ่งนี้ให้ดีที่สุดได้อย่างไร? ฉันสามารถปิดใช้งานปุ่มย้อนกลับด้วย JavaScript ได้หรือไม่?

15
Popstate เมื่อโหลดหน้าเว็บใน Chrome
Наэтотвопросестьответына Stack Overflow нарусском : Chrome ненужнаяперезагрузкастраницы history api ฉันใช้ History API สำหรับเว็บแอปของฉันและมีปัญหาหนึ่งอย่าง ฉันเรียก Ajax เพื่ออัปเดตผลลัพธ์บางอย่างบนเพจและใช้history.pushState ()เพื่ออัปเดตแถบตำแหน่งของเบราว์เซอร์โดยไม่ต้องโหลดหน้าซ้ำ จากนั้นฉันใช้window.popstateเพื่อกู้คืนสถานะก่อนหน้าเมื่อคลิกปุ่มย้อนกลับ ปัญหาเป็นที่ทราบกันดี - Chrome และ Firefox ปฏิบัติต่อเหตุการณ์ป๊อปสเตทแตกต่างกัน แม้ว่า Firefox จะไม่ทำงานในการโหลดครั้งแรก แต่ Chrome ก็ทำเช่นนั้น ฉันต้องการใช้รูปแบบ Firefox และไม่ทำให้เหตุการณ์เกิดขึ้นเมื่อโหลดเนื่องจากเพิ่งอัปเดตผลลัพธ์โดยให้ผลลัพธ์เดียวกันกับที่โหลด มีวิธีแก้ปัญหายกเว้นการใช้History.jsหรือไม่ เหตุผลที่ฉันไม่รู้สึกอยากใช้คือ - มันต้องการไลบรารี JS มากเกินไปด้วยตัวเองและเนื่องจากฉันต้องการให้ใช้งานใน CMS ที่มี JS มากเกินไปฉันจึงต้องการลด JS ที่ฉันใส่ลงไป . ดังนั้นอยากทราบว่ามีวิธีที่จะทำให้ Chrome ไม่เปิด 'popstate' …

2
ฉันสามารถใช้ window.location.replace ใน iframe ได้หรือไม่
เราสามารถใช้window.location.replaceเพื่อหลีกเลี่ยงประวัติและกำหนดเป้าหมายจุดยึดบนหน้าโดยไม่ต้องโหลดหน้าใหม่แต่ไม่ใช่ iframes? ปัญหาคือการละเมิด CSP (นโยบายความปลอดภัยของเนื้อหา)ซึ่งscript-src 'unsafe-inline'ต้องเปิดใช้งานสถานะ ยกเว้นว่าฉันไม่ได้กำหนด CSP และแม้ว่าฉันจะกำหนดไว้และให้script-src 'unsafe-inline'มันยังคงให้ข้อผิดพลาดการละเมิดเดียวกัน ผลลัพธ์เดียวกันคือ 11 / chrome / ff Iframe บนโดเมนเดียวกัน(ในไดเรกทอรีเดียวกัน) กำหนดเป้าหมาย iframe ในคอนโซลและใช้window.location.replace('/samepage.html#onpage_anchor')ในคอนโซล มันได้ผล. มันกำหนดเป้าหมายที่สมอหน้าโดยไม่ต้องโหลดหน้าซ้ำและไม่มีประวัติ ใส่รหัสเดียวกันแบบอินไลน์ในลิงก์จุดยึดและใช้งานได้ ใช้รหัสเดียวกันในสคริปต์ภายนอกรับข้อผิดพลาดการละเมิด csp วิธีนี้ใช้ได้ผลดีหากไม่ได้อยู่ใน iframe ฉันพยายามสร้าง CSPจะอนุญาตให้มีการดำเนินการ แต่ไม่ได้ที่สุดอนุญาตนโยบายการรักษาความปลอดภัยข้อมูลที่เป็นไปได้จะช่วยให้มัน แก้ไข: ดังนั้นฉันจึงรวบรวมตัวอย่างบน plunker ซึ่งอนุญาตให้มีหลายไฟล์ดังนั้นฉันจึงสามารถใช้href ที่เหมาะสมซึ่งอ้างอิงหน้าแม่ / ลูก หมายเหตุเกี่ยวกับตัวอย่างของผู้รวบรวม: ปัญหาไม่ได้ทำซ้ำในตัวอย่างเหล่านี้ สคริปต์ทำงานได้อย่างสมบูรณ์แบบแม้ใน iframe อย่างไรก็ตามรหัสเดียวกันไม่สามารถใช้งานได้บนเซิร์ฟเวอร์ภายในเครื่องของฉันหรือเมื่อฉันเรียกใช้งานมันบน VPS ฉันสงสัยว่าการละเมิด CSP ไม่ได้รับการทริกเกอร์จากผู้รวบรวมเพราะผู้รวบรวมกำลังแสดงเนื้อหาไปยังเบราว์เซอร์ผ่านเลเยอร์สิ่งที่เป็นนามธรรมบางประเภท ครั้งแรกที่คุณคลิกลิงก์หีบเพลงในพาเรนต์มันจะทำให้รีเฟรช นี่เป็นเพราะวิธีการโหลดหน้าเว็บในตอนแรกมันไม่ได้อ้างอิง index.html …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.