ios8 – 从WKWebView捕获window.print()

ios8 – 从WKWebView捕获window.print(),第1张

概述我正在尝试使用我的应用程序从WKWebView捕获window.print() javascript调用,以实际显示打印对话框并允许它们从页面上显示的按钮(而不是我的应用程序内的按钮)打印.有谁知道实现这个目标的最佳方法? 目前,对我来说,单击一个调用window.print()的链接只会触发decisionPolicyForNavigationAction委托方法,但我找不到任何相关内容. 在发 我正在尝试使用我的应用程序从WKWebVIEw捕获window.print() javascript调用,以实际显示打印对话框并允许它们从页面上显示的按钮(而不是我的应用程序内的按钮)打印.有谁知道实现这个目标的最佳方法?

目前,对我来说,单击一个调用window.print()的链接只会触发decisionPolicyForNavigationAction委托方法,但我找不到任何相关内容.

解决方法 在发布之后(显然)想出来……希望这有助于其他人.

创建Web视图时…

let configuration = WKWebVIEwConfiguration()let script = WKUserScript(source: "window.print = function() { window.webkit.messageHandlers.print.postMessage('print') }",injectionTime: WKUserScriptInjectionTime.AtdocumentEnd,forMainFrameOnly: true)configuration.userContentController.addUserScript(script)configuration.userContentController.addScriptMessageHandler(self,name: "print")self.webVIEw = WKWebVIEw(frame: CGRectZero,configuration: configuration)

然后在视图控制器中采用WKScriptMessageHandler协议并添加所需的方法……

func userContentController(userContentController: WKUserContentController,dIDReceiveScriptMessage message: WKScriptMessage) {    if message.name == "print" {        printCurrentPage()    } else {        println("Some other message sent from web page...")    }}func printCurrentPage() {    let printController = UIPrintInteractionController.sharedPrintController()    let printFormatter = self.webVIEw.vIEwPrintFormatter()    printController?.printFormatter = printFormatter    let completionHandler: UIPrintInteractionCompletionHandler = { (printController,completed,error) in        if !completed {            if let e = error? {                println("[PRINT] Failed: \(e.domain) (\(e.code))")            } else {                println("[PRINT] Canceled")            }        }    }    if let controller = printController? {        if UIDevice.currentDevice().userInterfaceIdiom == .Pad {            controller.presentFrombarbuttonItem(somebarbuttonItem,animated: true,completionHandler: completionHandler)        } else {            controller.presentAnimated(true,completionHandler: completionHandler)        }    }}
总结

以上是内存溢出为你收集整理的ios8 – 从WKWebView捕获window.print()全部内容,希望文章能够帮你解决ios8 – 从WKWebView捕获window.print()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1073906.html

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

发表评论

登录后才能评论

评论列表(0条)

保存