前にしたハッシュ値を取得し、jsが私はハッシュの変更は、それが可能な.Is前にしたハッシュ値を取得したい私のHTMLは</p> <pre><code><a href="#one">One</a> <a href="#two">Two</a> </code></pre> <p>あるとしなhashchange
$(window).on("hashchange"){
alert(document.location.hash);
}
ある?場合はい、どうですか?
前にしたハッシュ値を取得し、jsが私はハッシュの変更は、それが可能な.Is前にしたハッシュ値を取得したい私のHTMLは</p> <pre><code><a href="#one">One</a> <a href="#two">Two</a> </code></pre> <p>あるとしなhashchange
$(window).on("hashchange"){
alert(document.location.hash);
}
ある?場合はい、どうですか?
使用
$(window).on("hashchange", function(e){
console.log(e.originalEvent.oldURL)
console.log(e.originalEvent.newURL)
});
何であるか、ブラウザとOS未定義 –
を与えていますあなたは – Amit
Mozilla Firefoxとos Windows 7を使用していますが、私は十字ブラウザの互換性のある回答を希望していますので、質問しないでください。 –
あなたは、たとえば、最後のハッシュを追跡する必要があります。
var currentHash = function() {
return location.hash.replace(/^#/, '')
}
var last_hash
var hash = currentHash()
$(window).bind('hashchange', function(event){
last_hash = hash
hash = currentHash()
console.log('hash changed from ' + last_hash + ' to ' + hash)
});
これはIE9で動作しないようです。 'event.fragment'も未定義です。 'location.hash.replace(/ ^#/、 '')' –
@rparreeありがとう、私の答えを改善してそれを置き換える必要がありました。 –
実際アミットが提供するソリューションは、jQueryライブラリではなく動作し、クロスプラットホームも同様です。
ここでは、コアのJavaScriptとクロスブラウザーを使用した、より単純なソリューションです。 (IE/FF /クローム/サファリの最新版で確認)
window.onhashchange = function(e){
console.log(e);
var oldURL = e.oldURL;
var newURL = e.newURL;
console.log("old url = " + oldURL);
console.log("new url = " + newURL);
var oldHash = oldURL.split("#")[1];
var newHash = newURL.split("#")[1];
console.log(oldHash);
console.log(newHash);
};
FF12では動作しません。他のブラウザはチェックしていません。 – jldupont
上記のとおり、これは(IE/FF/Chrome/Safari)の最新バージョンで動作します。コードはうまくテストされ、4つのブラウザすべてで私のために働いています。私はFF12が最新のブラウザであるかどうかわかりません。私がテストしたとき、私のFFバージョンはFF20.0でした。
eの値(2行目で完了)を確認し、変数oldURLおよびnewURL(e.oldURLおよびe.newURL)が存在する場合はそれを見つけることができます。がんばろう。 –
私はLinuxでFF19を意味しました。とにかく、私は 'window.location.hash'を使用しています。これははるかに信頼性が高いようです。 – jldupont
は、それはあまりにも、おそらく他の場所でIEで動作しません
$(window).on("hashchange", function(e){
console.log(e.originalEvent.oldURL)
console.log(e.originalEvent.newURL)
});
を使用しないでください。
これをむしろ使用してください。
(function(w, $){
var UrlHashMonitor = {};
UrlHashMonitor.oldHash = '';
UrlHashMonitor.newHash = '';
UrlHashMonitor.oldHref = '';
UrlHashMonitor.newHref = '';
UrlHashMonitor.onHashChange = function(f){
$(window).on('hashchange', function(e){
UrlHashMonitor.oldHash = UrlHashMonitor.newHash;
UrlHashMonitor.newHash = w.location.hash;
UrlHashMonitor.oldHref = UrlHashMonitor.newHref;
UrlHashMonitor.newHref = w.location.href;
f(e);
});
};
UrlHashMonitor.init = function(){
UrlHashMonitor.oldHash = UrlHashMonitor.newHash = w.location.hash;
UrlHashMonitor.oldHref = UrlHashMonitor.newHref = w.location.href;
};
w.UrlHashMonitor = UrlHashMonitor;
return UrlHashMonitor;
})(window, window.jQuery);
/*
* USAGE EXAMPLE
*/
UrlHashMonitor.init();
UrlHashMonitor.onHashChange(function(){
console.log('oldHash: ' + UrlHashMonitor.oldHash);
console.log('newHash: ' + UrlHashMonitor.newHash);
console.log('oldHref: ' + UrlHashMonitor.oldHref);
console.log('newHref: ' + UrlHashMonitor.newHref);
//do other stuff
});
これは最新のすべてのブラウザで有効です。
が重複する可能性:http://stackoverflow.com/questions/680785/on-window-location-hash-change – undefined
@undefinedない正確 –