আমি কীভাবে জাভাস্ক্রিপ্ট কলব্যাক কোড লিখতে পারি যা ইউআরএল অ্যাঙ্কারের কোনও পরিবর্তনে কার্যকর করা হবে?
থেকে উদাহরণস্বরূপ http://example.com#aকরারhttp://example.com#b
আমি কীভাবে জাভাস্ক্রিপ্ট কলব্যাক কোড লিখতে পারি যা ইউআরএল অ্যাঙ্কারের কোনও পরিবর্তনে কার্যকর করা হবে?
থেকে উদাহরণস্বরূপ http://example.com#aকরারhttp://example.com#b
উত্তর:
গুগল কাস্টম অনুসন্ধান ইঞ্জিনগুলি পূর্বের মানটির তুলনায় হ্যাশটি পরীক্ষা করতে একটি টাইমার ব্যবহার করে, যখন কোনও পৃথক ডোমেনে শিশু যদি আইফ্রেমে পিতামাতার অবস্থানের হ্যাশ আপডেট করে তবে আইফ্রেমে নথির শরীরে আকার ধারণ করতে পারে। যখন টাইমার পরিবর্তনটি ধরা দেয়, তখন পিতা-মাতা শরীরের সাথে মেলে আইফ্রেমের আকার পরিবর্তন করতে পারেন যাতে স্ক্রোলবারগুলি প্রদর্শিত না হয়।
নীচের মতো কিছু একই অর্জন করে:
var storedHash = window.location.hash;
window.setInterval(function () {
if (window.location.hash != storedHash) {
storedHash = window.location.hash;
hashChanged(storedHash);
}
}, 100); // Google uses 100ms intervals I think, might be lower
গুগল ক্রোম 5, সাফারি 5, অপেরা 10.60 , ফায়ারফক্স 3.6 এবং ইন্টারনেট এক্সপ্লোরার 8 সকলেইhashchange ইভেন্টটিকে সমর্থন করে :
if ("onhashchange" in window) // does the browser support the hashchange event?
window.onhashchange = function () {
hashChanged(window.location.hash);
}
এবং এটি একত্র করা:
if ("onhashchange" in window) { // event supported?
window.onhashchange = function () {
hashChanged(window.location.hash);
}
}
else { // event not supported:
var storedHash = window.location.hash;
window.setInterval(function () {
if (window.location.hash != storedHash) {
storedHash = window.location.hash;
hashChanged(storedHash);
}
}, 100);
}
- jQuery এর যে hashchange ইভেন্টের জন্য চেক করুন এবং যদি প্রয়োজন হয় তাহলে নিজস্ব প্রদান করবে একটি প্লাগইন আছে http://benalman.com/projects/jquery-hashchange-plugin/ ।
সম্পাদনা : আপডেট হওয়া ব্রাউজার সমর্থন (আবার)।
hashChangeউপর window stackoverflow.com/questions/6390341/how-to-detect-url-change
hashChanged(storedHash);
hashChangedএই ক্ষেত্রে, এই কোডটি ব্যবহার করে কোনও বিকাশকারী দ্বারা প্রয়োগ করা একটি ফাংশন হ'ল। এখানে উত্তরটি কেবল দেখায় যে onhashchangeইভেন্টটি উপলভ্য নয় এমন পরিবর্তনের জন্য কীভাবে কেউ হ্যাশ পর্যবেক্ষণ করতে পারে এবং সর্বজনীন সমাধান সরবরাহের জন্য ইভেন্ট-ভিত্তিক এবং টাইমার-ভিত্তিক পদ্ধতির সমন্বয় করে। আমার বক্তব্যটি আপনি যে উত্তরটির সাথে সংযুক্ত করেছেন তা এখানে উত্তরের সাথে একেবারে কিছুই যোগ করে না ;-)। তারা একই বেসিক তথ্য সরবরাহ করে, এমনকি বেন আলমানের jQuery প্লাগইনে লিঙ্ক। পার্থক্যটি হ'ল আমি আমার উত্তরে একটি খাঁটি জেএস সমাধান সরবরাহ করেছি।
আমি addEventListenerওভাররাইটিংয়ের পরিবর্তে ব্যবহারের পরামর্শ দেব window.onhashchange, অন্যথায় আপনি অন্য প্লাগইনগুলির জন্য ইভেন্টটি ব্লক করবেন।
window.addEventListener('hashchange', function() {
...
})
আজ বিশ্বব্যাপী ব্রাউজার ব্যবহারের দিকে তাকিয়ে, একটি ফলব্যাক আর প্রয়োজন হয় না।
অন্যান্য এসও প্রশ্নের মধ্যে আমি যা দেখছি, কেবলমাত্র কার্যক্ষম ক্রস ব্রাউজার সমাধানটি টাইমার। উদাহরণস্বরূপ এই প্রশ্নটি দেখুন ।
আপনি এ থেকে আরও তথ্য পেতে পারেন
মিউটেশন ইভেন্ট মডিউলটি অ্যাট্রি এবং পাঠ্য পরিবর্তনগুলি সহ নথির কাঠামোর কোনও পরিবর্তনের বিজ্ঞপ্তির মঞ্জুরি দেওয়ার জন্য ডিজাইন করা হয়েছে।
var storedHash = window.location.hash;জন্য, পুটিং-এটি-একসাথে সারাংশ ব্লকে যুক্ত করুন। বিটিডব্লিউ: আজকাল এটিকে পলিফিল বলে আমার মনে হয়।