第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何在不跳文檔的情況下更新window.location.hash?

如何在不跳文檔的情況下更新window.location.hash?

萬千封印 2019-10-15 14:45:24
我在我的網(wǎng)站上設(shè)置了一個(gè)滑動面板。完成動畫制作后,我像這樣設(shè)置哈希function() {   window.location.hash = id;}(這是一個(gè)回調(diào),并且已在id前面分配)。這很好用,允許用戶在面板上添加書簽,也可以使非JavaScript版本正常工作。但是,當(dāng)我更新哈希時(shí),瀏覽器跳到該位置。我想這是預(yù)期的行為。我的問題是:如何預(yù)防這種情況?即,如何更改窗口的哈希,但是如果哈希存在,瀏覽器是否無法滾動到該元素?某種event.preventDefault()事情?我正在使用jQuery 1.4和scrollTo插件。非常感謝!更新資料這是更改面板的代碼。$('#something a').click(function(event) {    event.preventDefault();    var link = $(this);    var id = link[0].hash;    $('#slider').scrollTo(id, 800, {        onAfter: function() {            link.parents('li').siblings().removeClass('active');            link.parent().addClass('active');            window.location.hash = id;            }    });});
查看完整描述

3 回答

?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

有一種解決方法,可以在現(xiàn)代瀏覽器上使用歷史記錄API,而在舊版本上使用后備:


if(history.pushState) {

    history.pushState(null, null, '#myhash');

}

else {

    location.hash = '#myhash';

}


查看完整回答
反對 回復(fù) 2019-10-15
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

問題是您將window.location.hash設(shè)置為元素的ID屬性。無論是否“ preventDefault()”,瀏覽器都會跳轉(zhuǎn)到該元素,這是預(yù)期的行為。


解決該問題的一種方法是為哈希值加上一個(gè)任意值,如下所示:


window.location.hash = 'panel-' + id.replace('#', '');

然后,您要做的就是檢查頁面加載時(shí)是否帶有前綴的哈希。另外,由于您現(xiàn)在可以控制哈希值,因此甚至可以平滑滾動到它。


$(function(){

    var h = window.location.hash.replace('panel-', '');

    if (h) {

        $('#slider').scrollTo(h, 800);

    }

});

如果您需要使其始終保持工作狀態(tài)(而不僅僅是在初始頁面加載時(shí)),則可以使用一個(gè)函數(shù)來監(jiān)控對哈希值的更改,并即時(shí)跳轉(zhuǎn)到正確的元素:


var foundHash;

setInterval(function() {

    var h = window.location.hash.replace('panel-', '');

    if (h && h !== foundHash) {

        $('#slider').scrollTo(h, 800);

        foundHash = h;

    }

}, 100);


查看完整回答
反對 回復(fù) 2019-10-15
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊

便宜又討厭的解決方案..使用丑陋的#!樣式。


要設(shè)置它:


window.location.hash = '#!' + id;

閱讀:


id = window.location.hash.replace(/^#!/, '');

由于它與頁面不匹配并錨定或標(biāo)識,因此它不會跳轉(zhuǎn)。


查看完整回答
反對 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 606 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號