【问题标题】:How I can get UIWebViews id in java script?如何在 javascript 中获取 UIWebViews id?
【发布时间】:2016-12-16 11:23:44
【问题描述】:

我在 iOS 项目中使用 UIWebView。 在这个 webview 的 js 代码中,我使用了本地存储(通过 key 从本地存储读取数据并通过 key 将数据写入本地存储)。

var items = JSON.parse(localStorage.getItem('key')) || []; //reading

localStorage.setItem('key', newJson);  // writing

现在我只使用一个键来使用本地存储。 它工作正常。

但是项目中所有 UIWebViews 的本地存储都是通用的(我对吗?)。当我在项目中使用两个或多个 UIWebView(所有 webview 的 js 代码相似)时,我需要使用多个键来使用本地存储(每个 UIWebView 一个键),以便每个 webview 使用自己的存储。

我现在如何定义哪个 UIWebView 使用本地存储以便使用此 UIWebView 的密钥? 如何在 java 脚本中获取 UIWebViews id?

【问题讨论】:

    标签: javascript ios objective-c uiwebview local-storage


    【解决方案1】:

    您可以将对象保存在localStorage()

    通过这种方式,您可以将多个UIWebView 的数据保存在客户端内存中,并通过密钥轻松检索。

    一个例子:

     // create an object with some properties (as value use data from UIWebView)
    var uIWebViews = { 'uIWebView1': 1, 'uIWebView2': 2, 'uIWebView3': 3 };
    
    // save your object into local storage
    localStorage.setItem('uIWebViews', JSON.stringify(uIWebViews));
    
    // retrieve the object from storage, remember to parse it
    var retrievedObject = JSON.parse(localStorage.getItem('uIWebViews'));
    
    // get the object
    console.log('retrievedObject: ', uIWebViews);
    
    // get a property, equivalent to get a key
    console.log('key uIWebView2 has value: ', uIWebViews.uIWebView2);
    

    现场示例,请打开控制台查看结果:https://jsfiddle.net/hsf8gf8d/

    【讨论】:

    • 谢谢你的回答,但是我怎么知道我现在在哪个 UIWebView 中呢?所有 webview 的 js 代码都是相似的
    【解决方案2】:

    为了让 JS 代码知道它在哪个 webview 中运行,我将使用预定义的 JS 方法调用它的 stringByEvaluatingJavaScriptFromString: 方法,该方法在您的页面中设置一个变量。所以你的 JS 代码可能有类似

    function setWebViewID(webViewID) {
        // save the identifier somewhere and perhaps call other functions              
    }
    

    然后在webView中,一旦页面加载完毕,就调用

    [myWebView stringByEvaluatingJavaScriptFromString:@"setWebViewID(\"myID\")"]
    

    诀窍通常是确保内容在加载后立即与它在 JS 中所做的任何其他内容一起完成。如果您需要类似的东西,我建议您使用WKWebViewWKUserContentController 并查看addScriptMessageHandler:name:。有了它,您可以从 webview 正确设置侦听 JS 中的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 2019-07-16
      • 2014-07-29
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多