1. 程式人生 > >iPhone safari瀏覽器,後退後頁頁不執行指令碼

iPhone safari瀏覽器,後退後頁頁不執行指令碼

iPhone safari 後退後,頁面不觸發 ready事件(私以為DOMContentLoaded事件),後續指令碼不執行。
【解決方案】
針對 safari  body 註冊 onpageshow 事件,判斷如果是取的快取,就重新整理頁面;

可以使用 PageTransitionEvent 物件的 persisted 屬性來判斷。 如果頁面從瀏覽器的快取中讀取該屬性返回 ture,否則返回 false

程式碼如下

function fixSafari(evt){
    var str=navigator.userAgent;
    var isiPhone=str.indexOf("iPhone")!=-1;
    var isSafari=str.indexOf("Safari"
)!=-1; if(isiPhone&&isSafari){ evt.persisted&&window.location.reload(); } }
<body onpageshow="fixSafari(event)">