Is local storage for a Phonegap app on an Android device separate from the built in browser?

前端 未结 4 1104
南方客
南方客 2020-12-13 20:50

My question is essentially a follow up or clarification to this question.

I have an Android app built using Javascript and Adobe\'s Phonegap Build service, and I\'m

4条回答
  •  轮回少年
    2020-12-13 21:39

    Yes it is separate but there are time where you need to pass a variable of some kind to the In App Browser. It makes coding so much more easier to pass a ls item from a current webview to another one like in iOS.

    Here is what I did in PhoneGap

    I use the InAppBrowser executeScript() to pass a copy of the current webviews localStorage to another.

    //add the listener to detect when the page loads after inappbrowser is called into view
    ref.addEventListener('loadstop', function(){
         ref.executeScript({code: 'SetInAppBrowserLocalStorage(\''+localStorage+'\');'});
    });
    

    //In your inAppBrowser page you create a function that  will get called on loadStop
    //This will pass "all" the contents of the main webviws localStorage to the webview 
    //created by InAppBrowser
    function SetInAppBrowserLocalStorage(localStorageThatWasPassed){
        localStorage = localStorageThatWasPassed;
    };
    

    You could also clear the localStorage created by SetInAppBrowserLocalStorage() before the use leaves that view as well.

    Tested and working 100% :)...let me know if you need more help

    ***UPDATE*****

    This still works ...but not consistently anymore. After much testing I realize this is simply not the way to go. Sometimes the data simply is not passed fast enough when the inappbrowser instance is created. I talked to the cordova guys via there issue tracker and they told me it wasn't a secure way of doing things...I get that...but my response to them was what if I just want to pass ls variables between pages in my app..those are not even accessible from the internet... I honestly don't understand why the ls items can't be accessible globally in the app like it is in iOS and the rest of the web. If anyone has a better solution I would love to hear about it.

提交回复
热议问题