We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pageshow
iOS 13系统下App使用WKWebView展示网页。
WKWebView
现假设有两个页面foo.html和bar.html,都引入了WebViewJavascriptBridge。其中,foo.html中有如下代码:
foo.html
bar.html
WebViewJavascriptBridge
window.addEventListener("pageshow", myLoadHandler, false);
现进行这些操作:
WKWebView.goBack
结果发现:
回退到foo.html时 myLoadHandler 只在第一次被触发,之后几次都不会了
myLoadHandler
这个不符合 Apple的WebKit Page Cache(其他浏览器叫Back-Forward Cache、bfcache等)的正常行为(应该是每次都触发 pageshow)。
经过实验,可能是因为WebViewJavascriptBridge在injectJavascriptFile注入js的时候WebViewJavascriptBridge_js方法中创建了一个隐藏的iframe引起:
injectJavascriptFile
WebViewJavascriptBridge_js
messagingIframe = document.createElement('iframe'); messagingIframe.style.display = 'none'; messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE; document.documentElement.appendChild(messagingIframe);
不知道在现有设计下是否有解决方案? 或者是否考虑在 WKWebView 下使用 WKUserContentController.addScriptMessageHandler 来实现,从而绕开 iframe 的方案?
The text was updated successfully, but these errors were encountered:
我已经重构了这个库. 如果您遇到麻烦,可以尝试使用它. 下载地址: https://github.com/housenkui/WebViewJavascriptBridge 它更轻,使用更简单. 10分钟之内应该可以完成接入.
Sorry, something went wrong.
No branches or pull requests
iOS 13系统下App使用
WKWebView
展示网页。现假设有两个页面
foo.html
和bar.html
,都引入了WebViewJavascriptBridge
。其中,foo.html
中有如下代码:window.addEventListener("pageshow", myLoadHandler, false);
现进行这些操作:
foo.html
中的某个链接进入bar.html
,然后WKWebView.goBack
后退到foo.html
。结果发现:
这个不符合 Apple的WebKit Page Cache(其他浏览器叫Back-Forward Cache、bfcache等)的正常行为(应该是每次都触发
pageshow
)。经过实验,可能是因为
WebViewJavascriptBridge
在injectJavascriptFile
注入js的时候WebViewJavascriptBridge_js
方法中创建了一个隐藏的iframe引起:不知道在现有设计下是否有解决方案?
或者是否考虑在 WKWebView 下使用 WKUserContentController.addScriptMessageHandler 来实现,从而绕开 iframe 的方案?
The text was updated successfully, but these errors were encountered: