android 中怎么执行js脚本

android 中怎么执行js脚本,第1张

android要执行脚本,只有通过本地的webview打开脚本页面。

调用步骤

1、设置webview支持脚本

webSettings.setJavaScriptEnabled(true)

2、打开脚本页面

mWebView.loadUrl("file:///android_asset/demo.html")//这里打开该app的asset目录下的demo.html,里面含有wave函数脚本

3、调用脚本

mWebView.loadUrl("javascript:wave()")//调用打开页面中的wave函数

目前iOS项目中 Webview 几乎都会用到,iOS 8 之前使用UIWebView,iOS 8 之后 Apple 就不推荐使用了,目前已经放弃了,如果项目中存在就无法上架了,需要转为WKWebView了,说实话 UIWebView 是有性能上的缺陷,内存优化不够友好等,但是不得不说这是老的iOS开发人员用的最熟练熟悉的了,用起来得心应手。非迫不得已还真不愿转到WKWebView。好吧,既然已经这样了,又何必苦苦单恋一支花呢?

看了网上教程很多,自己使用小结一下,简单易用,本文适用于菜鸟级开发,废话不说了,

最主要的方法:发送消息

注意:对象名和方法名jumpUserProtocol名字的一致,参数可以是常用的NSArray,NSDictionary等类型,先说下在这个Demo中其实没用上,用的方法名判断的。

注意: addScriptMessageHandler

name为方法名 ,和JS 中的保持一致,添加脚本,相当于给Webview添加一个监听,有这个功能来处理JS。

在WKScriptMessageHandler代理方法中处理回调,实现自己的逻辑。

上面就是JS调用OC原生实现。

这个其实很简单,就一个方法:

WKWebView是现代 WebKit API 在 iOS 8 和 OS X Yosemite 应用中的核心部分。它代替了 UIKit 中的UIWebView和 AppKit 中的WebView,提供了统一的跨双平台 API(iOS和OS)。

//JS文件路径

NSString *jsPath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"]

//读取JS文件内容

NSString *jsContent = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:nil]

//创建用户脚本对象,

//WKUserScriptInjectionTimeAtDocumentStart :HTML文档创建后,完成加载前注入,类似于<head>中

//WKUserScriptInjectionTimeAtDocumentEnd :HTML文件完成加载后注入,类似于<body>中

WKUserScript *script = [[WKUserScript alloc] initWithSource:jsContent injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES]

//添加用户脚本

[webView.configuration.userContentController addUserScript:script]

//执行JS方法

[webView evaluateJavaScript:@"test()" completionHandler:^(id _Nullable result, NSError * _Nullable error) {

//result为执行js方法的返回值

if(error){

NSLog(@"Success")

}else{

NSLog(@"Fail")

}

}]

// 页面开始加载时调用

// 这个方法是服务器重定向时调用,即 接收到服务器跳转请求之后调用

5、WKWebView疑难

问题: http://stackoverflow.com/questions/24882834/wkwebview-not-loading-local-files-under-ios-8

具体参见: https://github.com/shazron/WKWebViewFIleUrlTest


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

原文地址: http://outofmemory.cn/bake/11306524.html

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

发表评论

登录后才能评论

评论列表(0条)

保存