1. 程式人生 > >[小Tip]Webkit下設定hash的一個坑

[小Tip]Webkit下設定hash的一個坑

提醒:本文最後更新於 2366 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

今天要說的hash,就是瀏覽器位址列URL裡#之後的那堆東東,一般用來定位到頁面中的命名錨點,或者用來維護純客戶端的頁面跳轉歷史狀態。這是幾年前的話題了,大家肯定都知道,我的部落格也寫過相關文章

hash的最大好處是改變它不會導致頁面重新整理,在history.pushState/replaceState問世之前,它無疑是JS端維持頁面狀態最好的方案。但我今天踩到一個坑:Webkit下,在frameset引入的頁面中改變最外層的location.hash,居然會導致頁面重新整理,測試了最新版的Safari和Chrome,都是如此;其他核心的瀏覽器都無此問題。

最後,我採用的解決方案也比較簡單:既然問題是出在高階的webkit下,直接呼叫history.replaceState代替給history.hash賦值就好了。只是我之前還從未想過,replaceState這麼“高階”的介面還可以用來修這麼弱智的Bug。。。

if(QW.Browser.webkit) {
    top.history.replaceState(null, top.document.title, '#'+hash);
} else {
    top.location.hash = hash;
}

這裡還有一個簡單的demo。這個坑之所以很少被人踩到,是因為踩坑條件比較特殊:改變hash的頁面必須是frameset方式引入,iframe引入的頁面沒有問題。如今用frameset的人越來越少了,踩坑機會也越來越小了,所以即使有人

早就報了bug,webkit一直也不修。

順便說下,這個坑是我今天改QWrap文件踩到的。現在QWrap文件終於可以把某個介面詳情頁URL複製下來發給別人了,也終於加上了評論功能,用的是disqus。

--EOF--

提醒:本文最後更新於 2366 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

相關推薦

[Tip]Webkit設定hash一個

提醒:本文最後更新於 2366 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 今天要說的hash,就是瀏覽器位址列URL裡#之後的那堆東東,一般用來定位到頁面中的命名錨點,或者用來維護純客戶端的頁面跳轉歷史狀態。這是幾年前的話題了,大家肯定都知道,我的部落格也寫過相關文章。 hash的最大好處

程式退款返回介面的一個

最近,做小程式退款的時候,前端點選退款,返回到原來的介面是,資料重新整理了,但是顯示的還是原來的資料。原因在於,前端首先要給後臺發請求,後臺再給微信端發請求,成功之後,在把結果傳給前端,同時重新整理訂單狀態,問題在於重新整理會有延遲。導致前端返回的時候,資料還是原來的資料。解決方法也很簡單,返回

iOS 8上NSMutableAttributedString顯示劃線的一個

專案中需要顯示文字的下劃線,在iOS 7之前可以正常執行的程式碼在iOS 8上不能正常顯示了,程式碼如下: NSMutableAttributedString *attributedString = [[NSMutableAttributedString allo

Flask大標題設定標題(再加一個線)【html Css】

簡述 參考: https://getbootstrap.com/docs/4.1/content/typography/ https://blog.csdn.net/think2me/article/details/7419028 核心程式碼 <

windows的dir命令的tip

使用dir命令將目錄下面的所有檔名匯出到一個txt檔案中: 如下:我們需要將C:\Users\liuyang\Desktop\業支測試\shadow檔案爆破\shadow目錄下的所有shadow檔名取出來,這個時候需要用到以下命令 dir *shadow.txt /b >shado

記錄死磕過的一個

目錄 寫在前面 1.修改web.xml 2.404頁面注意問題 @(終於等到你) 寫在前面 最近公司專案提了個很正常的需求,為什麼說是很正常的需求呢,保守點說,大多數的專案都會預設有這樣的功能,那就是tomcat指定404頁面,具體情況請聽我再囉嗦囉嗦。有這麼一

UGUI Toggle組件在Editor運行時的一個

ati gui 解決 tor 正常 ogg com 發現 inf 現象:unity editor下運行時,鼠標從Game窗口外移回,UI Toggle 標識選中狀態的Image都顯示為“選中效果”。 正常顯示:同時只有一個“選中” 異常顯示:都“選中” 排坑發現:C

Cenos7系統設定ip和聯網問題

剛裝完了Centos7小系統,可按如下步驟進行ip設定和聯網設定: 1、首先,進入/etc/sysconfig/network-scripts目錄下 [[email protected] ~]# cd /etc/sysconfig/network-scripts

tip:CSS3的圓形遮罩效果實現與應用

因為是使用純潔的CSS3實現,因此,IE6~8瀏覽器又將被侵豬籠。 看一下效果: HTML程式碼: <a href="#" class="test_outer"> <span class="test_cover trans

關於射線 碰撞檢測設定LayerMask的一個

今天碰到一個弄半天的問題,記錄下來做個教訓:如果要設定射線的層級,讓射線只在固定的一些層中可以用到如floatAtkMask = 1<< LayerMask.NameToLayer("Enemy");最好不要把1 設定為0,因為0是default層

一個簡單的linux設定定時執行shell指令碼的示例

很多時候我們有希望伺服器定時去執行一個指令碼來觸發一個操作,比如說定時去備份伺服器資料、資料庫資料等 不適合人工經常做的一些操作這裡簡單說下 shell Shell俗稱殼,類似於DOS下的command和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。作為命

STM32SysTick的一個容易發生的錯誤,時鐘頻率設定

今天同事測試我之前寫的一個小程式,發生了奇怪的錯誤,先是Uart通訊接收操作,出現了接收資料不全的問題:2個位元組的應答幀,在實際執行中只能收到1個位元組,導致程式死迴圈。檢查後發現,是接收部分程式碼留的延時太短,造成了晶片誤以為通訊已結束,但實際應答幀尚未傳輸完畢。(此處

windows和linux讀取檔案換行符的一個——\r\n和\n

      拿同事的一個windows下的C程式,在Linux下跑,結果不正確。定位為讀取.ini配置檔案錯誤。該配置檔案是在windows下編輯的,網上查到資料,說是windows和linux下對換行符處理不同導致的。      

[Tip]IE矩陣濾鏡Matrix一個大坑

提醒:本文最後更新於 2554 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 事情經過是這樣的:今天某同學用 Matrix 濾鏡實現了 IE 下的一個旋轉效果,但在 IE6、7 下頁面樣式全部被搞亂掉,濾鏡之後的 CSS 樣式完全沒生效。剝離無關程式碼後類似於這樣: <!DOCTYPE

[Tip]給元素命名時容易踩的

提醒:本文最後更新於 2105 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 之前說過,給元素的id或者class取一個看上去就是廣告的名字,很容易被adblock幹掉(當然如果你的網站足夠有名,怎麼取名都沒用,不出三天,立馬就有針對你的專屬規則)。所以在寫html屬性值的時候,我們除了要遵守

記錄windows10MongoDB安裝過程中遇到的一個

剛開始用MongoDB4.0.2.msi 安裝版本的報各種錯,剛開始安裝過程還沒有finish的時候就報錯,提示是否 ingore.  ingore之後按照網上的方法來報很多錯誤,錯誤資訊拿到網上搜說是許可權問題,但沒說詳細說是哪個許可權問題。 後來用3.6.8版本的。。

程式中 radio 的一個,到底 checked 該賦什麼值?

首先看官方給出的程式碼,wxml: <radio-group class="radio-group" bindchange="radioChange"> <label class=

ie 報錯:'SyntaxError: strict 模式不允許一個屬性有多個定義 ' ,基於vue element-ui的的解決

環境:基於vue-cli的element- ui的專案 在其他瀏覽器正常。在ie中報錯的程式碼: <el-select filterable clearable v-model="Form.P

使用GridLayout佈局時心子控制元件的layout_width埋,導致寬度溢位且設定無效

像設定頁面、新增編輯頁面,是比較適合用GridLayout和TableLayout佈局。今天用GridLayout時,怎麼都調整不了子控制元件的寬度。找了半天,原來是子控制元件的layout_width屬性設定導致。將屬性值由match_parent改成wrap_conten

發現一個生成二維碼的工具,可以設定背景圖片

發現一個生成二維碼的小工具visual-qr-code,java的,很不錯的小工具 為這位大哥的開源精神點贊,已star 其實主要就是一個java類,工程中提供了幾個demo,可以生成二維碼,並且設定背景圖,比現在大街上中間帶logo的二維碼要好看 與其說是二維碼生成工具