• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

将JavaScript注入WKWebView

iOS rin, seun 1年前 (2020-06-16) 315次浏览 0个评论

在Swift中,可以将JavaScript代码注入WKWebView并从您的应用程序中执行。下面的代码示例演示了过程:

  • 从本地文件加载HTML文件,
  • 从本地文件加载JavaScript代码,
  • 创建WKUserScript对象,
  • 将JavaScript插入HTML文档。

从应用程序包加载HTML文件

let myProjectBundle:Bundle = Bundle.main

let myUrl = myProjectBundle。url forResource:“ my-html-file” ,withExtension:“ html” 

myWebView.loadFileURL myUrl,allowingReadAccessTo:myUrl 

从本地文件加载JavaScript代码

以下代码示例是一个函数,您可以将其添加到Swift文件中并调用以加载demo-script.js文件的内容。

func getMyJavaScript ->string{
  if let filepath = Bundle.main.pathforResource:“演示脚本” ,ofType:“ js” {
    do{
      return try String contentsOfFile:filepath     } catch{
      return ""
    }
  }else{
    return ""
  }
}

tips:

demo-script –是文件名。注意,这里不需要指定文件扩展名。
js –演示脚本文件扩展名。

使用WKUserScript将JavaScript注入WKWebView

var myWebView:WKWebView!
overide func viewDidLoad {
super.viewDidLoad 
let config = WKWebViewConfiguration 
let js = getMyJavaScript 
 let script= WKUserScript (source:js,injectionTime:.atDocumentEnd,forMainFrameOnly:false 
 config.userContentController.addUserScript script
 config.userContentController.addself,name:“ clickListener” 
 myWebView = WKWebView (frame:view.bounds,config:config 
 myWebView.uiDelegate =self
 myWebView.navigationDelegate =self
 view.addSubview myWebView!
}

tips:

getMyJavaScript() –是从本地文件加载JavaScript的函数。此功能的源代码也在此页面上。

完整的例子

import UIKit
import WebKit
import Firebase
class MyWebViewViewController:UIViewController,WKNavigationDelegate,WKUIDelegate {

var myWebView:WKWebView!

overide func viewDidLoad {
super.viewDidLoad 
let config = WKWebViewConfiguration 
let js = getMyJavaScript 
let sccript= WKUserScript 源:js,injectionTime:.atDocumentEnd,forMainFrameOnly:false 
 config.userContentController.addUserScript script
 config.userContentController.addself,name:“ clickListener” 
 myWebView = WKWebView frame:view.bounds,config:config 
 myWebView.uiDelegate =self
 myWebView.navigationDelegate =self
view.addSubview myWebView!
}

overide func viewWillAppear _animate:Bool {
 super.viewWillAppear animate
let myProjectBundle:Bundle = Bundle.main
let myUrl = myProjectBundle。url forResource:“ my-html-file” ,withExtension:“ html” 
 myWebView.loadFileURL myUrl,allowingReadAccessTo:myUrl 
//let URL = URL(string: “ HTTPS :// appsdeveloperblog .COM ”)!
 //myWebView.load(URLRequest(url:url))
}

 func getMyJavaScript ->string{
if let filepath = Bundle.main.pathforResource:“演示脚本” ,ofType:“ js” {
do{
return try String contentsOfFile:filepath 
} catch{
return “”
}
} else{
return “”
}
}
}
喜欢 (0)

您必须 登录 才能发表评论!