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)?)

参考: https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/index.html#//apple_ref/occ/instm/WKWebView/evaluateJavaScript:completionHandler

如果您有要加载和使用的本地 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)