嗯嗯,android平台也有 webview 不能及时销毁问题。。。
另外 webview 在ios上,还有个问题, android没有
说哈场景,webview通过loadhtmlString 加载 字符串网页,
var scheme = "testkey";
function jsCallback (target, url) {
// 这里的返回值是内部页面的 URL 数值,需要自行解析自己需要的数据。
var str = url.replace(scheme + '://', ''); // str === 'a=1&b=2'
// webview target
console.log(target);
}
this.webview.setJavascriptInterfaceScheme(scheme);
this.webview.setOnJSCallback(jsCallback);
这个是官网的例子, 但是 jscallback 在ios是根本调用不到的。。。。
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSString *url = [webView.URL absoluteString];
这儿的url 是file://xxx 路径。。。 就算设置了 document.location = 'testkey://a=1&b=2';
url也是 file://xxxx/ testKey://a.. 路径,导致没有去执行jscallback
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSString *url = [webView.URL absoluteString];
NSString *strRequest = [navigationAction.request.URL.absoluteString stringByRemovingPercentEncoding];
if ([strRequest isEqualToString: @"custom://exit"]) {
self.onJsCallback([strRequest UTF8String]);
decisionHandler(WKNavigationActionPolicyCancel);
return;
}
我用strRequest 替换url,去判断,就能调用到。。。
你们查查呢