ios里面怎样监听js的事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios里面怎样监听js的事件相关的知识,希望对你有一定的参考价值。

ios开发之Objective-C与javascript交互操作 中我们可以通过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.
参考技术A IOS可以监听url的变化。
所以,js事件发生的时候,改变url的变化,从而IOS监听到了URL的变化,从而知道发生了什么js事件(预先定义好一套规则)
可能还有其他方式,我只是给个思路。

关于EXTJS的onResize事件监听问题, 我设置了一个panel,里面对它进行onResize事件监听怎么写,

最好有具体代码,
还设有就是这个监听事件的函数中的每个参数的意思是什么,高手赐教
不胜感激

resize : ( Ext.Component this, Number adjWidth, Number adjHeight, Number rawWidth, Number rawHeight )里面参数是坐标点,由两个坐标点组成的新的大小和位置。(x1,y1,x2,y2)。

on( String eventName, Function handler, [Object scope], [Object options] ) : void
这是panel的事件监听函数,第一个参数是事件名称,resize是一个事件,所以写'resize',第二个是处理函数,在这里传入参数。第三个是函数的作用域,一般无特殊情况写this即可。

具体就是this.on('resize',handlerFn:function(this,adjx,adjy,rawx,rawy)
//这里写你的操作即可,参数是对应resize事件里的。
,this);

更多详细,请参考extjs API
参考技术A 你在百度搜 四湖论坛 希望对你有帮助

以上是关于ios里面怎样监听js的事件的主要内容,如果未能解决你的问题,请参考以下文章

怎样理解js中的事件监听

JS如何实现方法监听?

在android中怎样给整个页面设置监听事件

jQuery是怎样监听到事件的?

关于EXTJS的onResize事件监听问题, 我设置了一个panel,里面对它进行onResize事件监听怎么写,

vue.js怎样移除绑定的点击事件