Swift与JS交互
来源:互联网 发布:等离子数控切割机编程 编辑:程序博客网 时间:2024/06/01 09:32
swift与js交互:
先看model:
@objc protocol VideoDelegate : JSExport { func callSystemCamera(); func exitsCollection(cid: String);}@objc class OCModel: NSObject , VideoDelegate { var jsContext: JSContext! func callSystemCamera() { print("callSystemCamera exe") let jsFunc = jsContext.objectForKeyedSubscript("jsFunc"); jsFunc?.call(withArguments: []); } func exitsCollection(cid: String) { print("cid \(cid)"); let handleFunc = jsContext.objectForKeyedSubscript(cid); handleFunc?.call(withArguments: ["type","1"]); } }class TestJSContext: NSObject { func testJS(){ let jsContext = JSContext(); jsContext?.exceptionHandler = { (context,value) -> Void in print("context?.exception.toString() \(String(describing: context?.exception?.toString()))"); } let jsPath = Bundle.main.url(forResource: "js", withExtension: "js"); let jsTxt = try? String.init(contentsOf: jsPath!); // let value = jsContext?.evaluateScript("2 * 0"); // print("value?.toObject() \(value?.toString())"); let csDt = jsContext?.evaluateScript(jsTxt!); print(csDt as Any); let arrayVa = jsContext?.objectForKeyedSubscript("array"); print("arrayVa?.toArray() \(arrayVa?.toObject() ?? "")"); var funcMethod = jsContext?.evaluateScript("enterHome") let result = funcMethod?.call(withArguments: [9]) print("object = \(result)") }}
注意: 必须实现 JSExport协议,
viewController:
首先加载 html 到 webView
然后 在加载完成之后 直接加入 model
有点需要注意:
是 value(forKeyPath:)不是 value(forKey:);
从webView 里获取 JSContext
- self.jsContext = webView.value(forKeyPath: "documentView.webView.mainFrame.javaScriptContext") as? JSContext
阅读全文
0 0
- Swift与JS交互
- swift 与JS交互( JS调用swift方法)
- Swift与Js通过WebView交互
- swift 3.0 webview与JS的交互
- iOS下Hybird实现---OC与JS交互以及swift与JS交互
- iOS与JS交互实战篇(Swift/ObjC)
- WKWebView 怎么拦截URL 与JS的交互 (Swift)
- iOS开发 - Swift使用JavaScriptCore与JS交互
- Swift 与Cocoa的交互
- Swift与JavaScript交互实战
- Swift 与 JavaScript 的交互
- Swift 与 JavaScript 的交互
- ios webView与js交互与类似回调的实现(swift)
- swift js 实现简单的交互 JavaScriptCore
- swift 开发UIWebView跟JS的交互
- Flash与JS交互
- AS3与JS交互
- ActiveX与JS交互
- PyCharm设置
- 菜鸟前端日记10 (原生JS--数组的操作方法)
- 高级篇 II: 作业的执行
- Makefile赋值符号的使用——"=" ":=" "?=" "+="
- 解决inteijj Idea 编辑器中 @Override 报错问题
- Swift与JS交互
- Spark Streaming---HDFSwordcount
- 如何使用TensorFlow追踪千年隼号
- 正则表达式要点(简要)
- 后起之秀百度云为何能在竞争激烈的云市场上打响进攻战
- 哪几种方式可用来实现线程间通知和唤醒
- nvidia GPU 性能查看
- Java 多线程
- 模板整理: 图论---最小生成树