设为首页 加入收藏

TOP

macOS webview编程(二)
2019-09-03 02:41:10 】 浏览:403
Tags:macOS webview 编程
; <a href='java script:needQuit();'>Quit</a><p> <script> function testCallSwift(){ //注意调用方式,window是js的对象 //swiftHost是swift的接口 //其后则是声明的swift函数 window.swiftHost.callFromJS1("hello swift"); } function needQuit(){ window.swiftHost.quit(); } </script>

5.截获webview每一次访问

跟上面类似,要再增加一个代理:

//初始化的时候增加:
        webView!.policyDelegate=self;

并且声明类的时候多一个继承:WebPolicyDelegate。随后代码中可以实现一个接口:

    func webView(_ webView: WebView!,
                 decidePolicyForNavigationAction actionInformation: [AnyHashable : Any]!,
                 request: URLRequest!,
                 frame: WebFrame!,
                 decisionListener listener: WebPolicyDecisionListener!) {
        NSLog("nav to %@",request.url!.absoluteString)  //这里是将要转向的网址
        listener.use()  //允许访问这个网址
        //listener.ignore()   //不允许访问这个网址则调用这个
    }

也有些程序中为了简化从js调用swift的工作量,会用链接的方式,在链接地址中传入一些指令,就可以用这个函数截获网址并且处理,被处理的网址通常使用listener.ignore()来禁止本次浏览器转向,免得影响当前页面。

6.响应js中的警告窗

通常的webview都是不允许js中的alert警告窗的,一方面是为了应用程序整体的效果;另一方面,webview作为一个空间,自己没有UI的控制权,所以类似的工作,是要有应用程序自己实现警告框窗口的。实现警告窗依然要给类增加一个集成WebUIDelegate,并在初始化中增加:

        webView!.uiDelegate=self;

//随后可以实现一个接口:
    func webView(_ sender: WebView!,
                 runjava scriptAlertPanelWithMessage message: String!,
                 initiatedBy frame: WebFrame!){
        NSLog("msg of alert: %@",message)
    }

如果不满足于只是得到警告消息,要自己在这个函数中使用cocoa的警告窗来显示相关的信息。

7.其它

还可以实现从js中访问swift中的变量功能。使用isKeyExcludedFromWebScriptwebScriptNameForKey函数,我用得少,如果需要,参考上面定义函数的方法,查一查官方文档自己来试试吧。

参考资料:

Swift & java script integration

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇快看Sample代码,速学Swift语言(.. 下一篇类型转化

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目