如何在webView的localStorage中设置值

时间:2016-01-18 13:51:51

标签: javascript android webview

我正在连接到url,只有在我的webView浏览器中正确设置了令牌值时才会加载。

这是一个脚本,当我启动webView时会找到userToken的null值:

$.ajaxSetup({
    data: {
        token: localStorage.userToken
    }
});

sendToApp = function(_key, _val) {
    var iframe = document.createElement("IFRAME");
    iframe.setAttribute("src", _key + ":##sendToApp##" + _val);
    document.documentElement.appendChild(iframe);
    iframe.parentNode.removeChild(iframe);iframe = null;
}

IsMobile = true;

$.when(

    loadData.setup()

).then(function(data) {

    Setup = data;

    Struct = new App.Collection.Struct();
    View = new App.View.Phone();
    Zone = new App.Collection.Zone();

    Zone.setAll();
    Zone.findWhere({id:"0"}).set('path', 'Favourites')
    Struct.startLoop();
});

我收到错误:

I/chromium: [INFO:CONSOLE(3)] "Uncaught TypeError: Cannot read property 'userToken' of null" , source: http://217.76.112.72:60180/js/mobile.js (3)

如何将userToken设置为我的android webView的本地存储,以便此值不再为null?

我读了几篇关于webView数据库或javascript参数设置的帖子,但我找不到我的问题的答案:

JS属性设置:

Uncaught TypeError: Cannot set property 'value' of > null" in Android

数据库主题:

Android webview & localStorage

Using local storage on Android webview

例如,在那些主题中,人们正在设置某种数据库的路径,从我所理解的是localStorage,但如果我是对的,我该怎样设置它的价值?

编辑:我的webView设置:

public void setupWebView(String url, String token) {
    HashMap<String, String> map = new HashMap<>();
    map.put("userToken", token);

    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(url, map);
}

2 个答案:

答案 0 :(得分:0)

使用2参数loadUrl无济于事。您将无法访问标题。

您可以做什么,是否可以在WebView中调用函数。

webView.loadUrl("javascript:setUserToken(token)");

您也可以使用此功能在页面上启动其余代码。

function setUserToken(userToken) {
    $.ajaxSetup({
        data: {
            token: userToken
        }
    });

    // ... Launch your ajax
}

答案 1 :(得分:-3)

访问Web视图本地存储使用 localStorage.getItemlocalStorage.setItem('token', 'token_value') localStorage.getItem('token')

{{1}}

WebView与浏览器非常相似。