
大概思路是:在JavaScript事件响应时,通过设置document.location,这会引发webview的一个delegate方法,从而实现发送通知的效果,即达到监听的目的。
1、在javascript与webView之间定一个协议约定:
myapp:myfunction:myparam1:myparam2
2、在javascript中添加代码:
document.location = "myapp:" + "myfunction:" + param1 + ":" + param2
3、在webView的delegate方法webView:shouldStartLoadWithRequest:navigationType: 添加
- (BOOL)webView:(UIWebView *)webView2
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
NSString *requestString = [[request URL] absoluteString]
NSArray *components = [requestString componentsSeparatedByString:@":"]
if ([components count] >1 &&
[(NSString *)[components objectAtIndex:0] isEqualToString:@"myapp"]) {
if([(NSString *)[components objectAtIndex:1] isEqualToString:@"myfunction"])
{
NSLog([components objectAtIndex:2])// param1
NSLog([components objectAtIndex:3])// param2
// Call your method in Objective-C method using the above...
}
return NO
}
return YES// Return YES to make sure regular navigation works as expected.
}
解决的方法如下:
1、可以监听微信端,手机端,ios端的浏览器返回事件,关闭事件不支持
当进入该页面,我们就给这个history压入一个本地的连接。当点击返回、后退及上一页的 *** 作时,就进行监听,在监听代码中实现自己 *** 作。
2、下面是完整的代码:
$(function(){
pushHistory()
window.addEventListener("popstate", function(e) {
alert("我监听到了浏览器的返回按钮事件啦")//根据自己的需求实现自己的功能
}, false)
function pushHistory() {
var state = {
title: "title",
url: "#"
}
window.history.pushState(state, "title", "#")
}
})
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)