最近碰到了這種情況,說實話很苦惱,找了兩三天,發現很簡單的解決方式,就是把文件發佈到服務端,訪問服務端文件就好了。
可是是爲什麼呢?
這要從我設置的子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不是萬能的,湊湊合合不是幹正經事兒的解決方案,這纔是剛開始,以後無數坑等你解決,總有出事的一天。