ios内嵌HTML5能实现事件监听吗

ios内嵌HTML5能实现事件监听吗,第1张

在iOS开发之Objective-C与HTML5交互 *** 作 中我们可以通过stringByEvaluatingJavaScriptFromString 去实现在obj-C中获取到相关节点属性,添加javascript代码等功能。但是我们如何监听到javascript的响应事件呢。在MAC OS中有效的API去实现,但iPhone没有,但我们有一个技巧途径:

大概思路是:在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", "#")  

    }  

      

})


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/6180455.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-17
下一篇2023-03-17

发表评论

登录后才能评论

评论列表(0条)

    保存