我如何在java脚本中获得UIWebViews id
How I can get UIWebViews id in java script?
我在iOS项目中使用UIWebView。在这个webview的js代码中,我使用本地存储(通过键从本地存储读取数据,并通过键将数据写入本地存储)。
var items = JSON.parse(localStorage.getItem('key')) || []; //reading
localStorage.setItem('key', newJson); // writing
现在我只使用一个键来使用本地存储。
但是本地存储在项目中的所有uiwebview(我是对的还是不对的?)。当我在项目中使用两个或多个UIWebView时(js代码对所有的webview都是类似的),我需要使用多个键来使用本地存储(每个UIWebView一个键),以便每个webview使用自己的存储。
我如何定义哪个UIWebView使用本地存储现在为了使用这个UIWebView键?我怎么能得到UIWebViews id在java脚本?
您可以在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/
为了让JS代码知道它在什么webview中运行,我会用一个预定义的JS方法调用它的stringByEvaluatingJavaScriptFromString:
方法,该方法在你的页面中设置一个变量。JS代码可以是
function setWebViewID(webViewID) {
// save the identifier somewhere and perhaps call other functions
}
然后在webView中,一旦页面加载完毕,你调用
[myWebView stringByEvaluatingJavaScriptFromString:@"setWebViewID('"myID'")"]
技巧通常是确保内容在加载后与JS中所做的任何其他东西一起完成。如果您需要类似的东西,我建议使用WKWebView
, WKUserContentController
和查看addScriptMessageHandler:name:
。这样,你就可以从webview中正确地设置侦听JS中的事件。 相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- Href:当前DIV中的目标ID
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Javascript复选框函数:;缺少:在属性id之后"
- Twitter引导程序Typeahead-Id&标签
- 如何与特定ID交谈
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 如何在速度模板中获取LiferayPortlet实例id
- 谷歌地图可以't添加正确的标记ID
- 我如何在java脚本中获得UIWebViews id