iOS WkWebView 是否可以在加载页面(完成后)上执行外部 JS
Can External JS be executed on a loaded page (when complete) in iOS WkWebView
能否将外部 JS 注入 iOS 应用程序(具体为 wkwebview)内的 Web 视图,然后执行?
不是 adblock api 用于 safari - 但想象一下简单的 JS/JQ 也能做到这一点。找一个class,改成class.
这能做到吗?如果是这样 - 在 WkWebview 中可以执行哪些类型的 Javascript 有限制吗?
对于WKWebView,您可以执行以下实例方法Javascript。要执行的 JS 必须作为 NSString 发送到方法。
Obj-C
- (void)evaluateJavaScript:(NSString *)javaScriptString
completionHandler:(void (^)(id,
NSError *error))completionHandler
Swift
func evaluateJavaScript(_ javaScriptString: String,
completionHandler completionHandler: ((AnyObject?,
NSError?) -> Void)?)
如果您有要加载和使用的本地 JavaScript 文件。类似于添加
<script src="file.js" />
您可以在 swift
中使用它
let root = NSBundle.mainBundle().resourceURL!
let JSURL = root.URLByAppendingPathComponent("file.js")
let JSString = try! String(contentsOfURL: JSURL)
let WKJS = WKUserScript(source: JSString, injectionTime: WKUserScriptInjectionTime.AtDocumentStart, forMainFameOnly: false)
webView.configuration.userContentController.addUserScript(WKJS)
能否将外部 JS 注入 iOS 应用程序(具体为 wkwebview)内的 Web 视图,然后执行?
不是 adblock api 用于 safari - 但想象一下简单的 JS/JQ 也能做到这一点。找一个class,改成class.
这能做到吗?如果是这样 - 在 WkWebview 中可以执行哪些类型的 Javascript 有限制吗?
对于WKWebView,您可以执行以下实例方法Javascript。要执行的 JS 必须作为 NSString 发送到方法。
Obj-C
- (void)evaluateJavaScript:(NSString *)javaScriptString
completionHandler:(void (^)(id,
NSError *error))completionHandler
Swift
func evaluateJavaScript(_ javaScriptString: String,
completionHandler completionHandler: ((AnyObject?,
NSError?) -> Void)?)
如果您有要加载和使用的本地 JavaScript 文件。类似于添加
<script src="file.js" />
您可以在 swift
中使用它let root = NSBundle.mainBundle().resourceURL!
let JSURL = root.URLByAppendingPathComponent("file.js")
let JSString = try! String(contentsOfURL: JSURL)
let WKJS = WKUserScript(source: JSString, injectionTime: WKUserScriptInjectionTime.AtDocumentStart, forMainFameOnly: false)
webView.configuration.userContentController.addUserScript(WKJS)