如何访问UIWebView的子窗口上下文

时间:2016-05-18 19:16:25

标签: javascript ios objective-c uiwebview

我有一个在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与常规浏览器中的工作方式相同?

1 个答案:

答案 0 :(得分:0)

通过应用A和应用B,您是否正在使用两种不同的iOS应用?或者在同一个iOS应用中的两个不同的网页视图 ?我假设你在谈论后者。

同一个应用中的网络视图共享相同的sessionStorage,您可以使用它来共享数据。要在Web视图之间调用函数,请使用stringByEvaluatingJavaScriptFromString(_:)方法。

<强> E.g:

夫特

let result = myWebView.stringByEvaluatingJavaScriptFromString("onAppBWindowLoad()")

其中onAppBWindowLoad有此实现:

function onAppBWindowLoad() {
    return someData
}

注意:您可能会发现my question非常有用。