我有一个在UIWebView包装器中运行的应用程序(应用程序A)。我有另一个应用程序(应用程序B)需要显示并接受来自第一个的一些数据。目前,我们正在包装器中检测window.open
(来自应用程序A),并创建一个新的控制器,其中第二个WebView可以滑入并包含应用程序B.
在app A的JS代码中:
var appBWindow = window.open("APP_B_URL");
// Checking inside of setInterval for existence
// of the .init() that is set by app B on its window
// when it's found we call it and pass it some data
function onAppBWindowLoad() {
appBWindow.init(someData);
}
这适用于桌面和iOS Safari,但使用UIWebView appBWindow.init
永远不会更改。看起来JSContexts
的连接方式与Safari / Chrome中的连接方式不同。
有没有办法确保appBWindow
与常规浏览器中的工作方式相同?
答案 0 :(得分:0)
通过应用A和应用B,您是否正在使用两种不同的iOS应用?或者在同一个iOS应用中的两个不同的网页视图 ?我假设你在谈论后者。
同一个应用中的网络视图共享相同的sessionStorage
,您可以使用它来共享数据。要在Web视图之间调用函数,请使用stringByEvaluatingJavaScriptFromString(_:)
方法。
<强> E.g:强>
夫特
let result = myWebView.stringByEvaluatingJavaScriptFromString("onAppBWindowLoad()")
其中onAppBWindowLoad
有此实现:
function onAppBWindowLoad() {
return someData
}
注意:您可能会发现my question非常有用。