hbuilder mui 在ios環境下 localstorage 子iframe獲取不到localstorage值,或者退出APP後再打開APP值丟失。

最近碰到了這種情況,說實話很苦惱,找了兩三天,發現很簡單的解決方式,就是把文件發佈到服務端,訪問服務端文件就好了。

可是是爲什麼呢?

這要從我設置的子iframe的src值說起,地址大概是這樣的:forder/test.html

這樣就會引起ios不適,他會認爲這個頁面和他的父頁面是跨域一樣的存在。可是是爲什麼呢?

應該是domain的關係,他會認爲forder/test.html這個地址沒有domain,大概就是理解成了domain是null,然後判定和父頁面domain不一致,然後認爲你是跨域操作,所以localStorage.getItem當然就取不到父頁面的localStorage之前存的值啦。而且,在你退出APP的時候,還會把你當前頁,forder/test.html的localStorage裏的值清除掉,下次你再打開這個頁面,就會發現之前存的值丟失了。

安卓和瀏覽器很穩,safari也沒發現這種情況,就iphone真機調試出了這問題。

解決方法:發佈到服務器上,用域名或者IP訪問。

分享一下,給小夥伴們提醒一下,以免掉坑。

不過這次也沒白費勁,起碼知道了如果真跨域了,兩個iframe該怎麼傳數據,也算沒白折騰。

但是話說回來,最正確的方式還是不要用iframe,搞APP就專心搞APP,不要總想着一套項目,一萬個平臺通用。

原生肯定是最好,h5跨平臺其次,最起碼app要和web分開,h5不是萬能的,湊湊合合不是幹正經事兒的解決方案,這纔是剛開始,以後無數坑等你解決,總有出事的一天。

 

發佈了6 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章