我正在嘗試使用UIWebView
來顯示各種網站的iOS應用程序。最近我完成了將Javascript注入到UIWebView
的邏輯,以捕獲window.open
,window.close
和window.opener.focus
的實例。簡而言之,我注入的JS覆蓋了前面提到的JS函數,其中包括使用特定的方案創建iframe
,我可以在應用程序的webView:shouldStartLoadWithRequest:navigationType
方法中使用它。目前這一切都正常,包括window.open
創建新的UIWebView
,而不是在同一個窗口中加載。UIWebView Javascript窗口到窗口通信
現在,問題出現在沒有可行的解決方案之間的JS通信窗口。如果子窗口試圖呼叫window.opener
或window.parent
,它總是返回一個空值,因此它不能傳回原始網絡視圖。
爲了瞭解iOS瀏覽器能夠有效地執行窗口間通信,我發現在iPhone上的9個瀏覽器中,只有Safari能夠成功地有效地執行此通信。這導致我相信,有一些與UIWebView
,防止完整的JS窗口到窗口通信成爲可能。
有沒有人獲得UIWebView與所有JS邏輯,即窗口到窗口通信完全集成的任何成功?或者有證據證明JS窗口間的通信是不可能的?任何方向或建議表示讚賞。謝謝!
同樣的問題。運氣好的話? – drogon
不幸的是,不幸的是。我所能做的只是簡單的JS注入來覆蓋窗口方法(如上所述)。在我的情況下,核心問題源自加載到UIWebview的網站中的Facebook身份驗證,用戶在驗證後會被卡住,因爲沒有窗口到窗口的通信。最後,我不得不改變加載到WebView的網站中的邏輯(我恰好有能力控制它),直接使用FB重定向,而不是使用具有彈出窗口的普通身份驗證流程。 –