थोड़ा क्रोम एक्सटेंशन करते समय, मुझे एक समान समस्या का सामना करना पड़ा: कभी-कभी, पृष्ठ बदल जाता है, लेकिन URL नहीं।
उदाहरण के लिए, बस फेसबुक होमपेज पर जाएं, और 'होम' बटन पर क्लिक करें। आप पृष्ठ को फिर से लोड करेंगे, लेकिन URL नहीं बदलेगा (एक-पृष्ठ ऐप शैली)।
99% समय, हम वेबसाइटों को विकसित कर रहे हैं ताकि हम उन घटनाओं जैसे कि कोणीय, प्रतिक्रिया, स्वर आदि से प्राप्त कर सकें।
लेकिन , Chrome एक्सटेंशन (वेनिला JS में) के मेरे मामले में, मुझे एक ऐसी घटना को सुनना पड़ा, जो प्रत्येक "पृष्ठ परिवर्तन" के लिए ट्रिगर होगी, जिसे आमतौर पर URL द्वारा बदला जा सकता है, लेकिन कभी-कभी ऐसा नहीं होता है।
मेरा घर का बना समाधान निम्नलिखित था:
listen(window.history.length);
var oldLength = -1;
function listen(currentLength) {
if (currentLength != oldLength) {
// Do your stuff here
}
oldLength = window.history.length;
setTimeout(function () {
listen(window.history.length);
}, 1000);
}
तो मूल रूप से लियोनर्ट समाधान, खिड़की के इतिहास पर लागू किया जाता है, जो एक पेज पेज ऐप में बदलने पर बदल जाएगा।
रॉकेट विज्ञान नहीं, लेकिन सबसे साफ समाधान मुझे मिला, यह देखते हुए कि हम केवल एक पूर्णांक समानता की जांच कर रहे हैं, और बड़ी वस्तुओं या पूरे डोम की नहीं।