2
サイドバーのようないくつかのWebページ要素を除外しようとしています。新しいCSSタグをjavascript全体に挿入して、新しいスタイルタグを付けてjavascriptファイルを作成しましたSwift 3のWKWebViewにJavaScriptを挿入するには
var styleTag = document.createElement("style");
styleTag.textContent = '.sidebar {display:none;}';
document.documentElement.appendChild(styleTag);
とhereを説明したが、まだないとネイティブコードとホストされたWebコンテンツ間のブリッジを作成することができ、いくつかのプロパティを保持して作成したWKWebViewConfigurationオブジェクト:私はGoogle Chromeの開発ツールで検査し、このコードで終了したことをこのスクリプトを実行しています。
これは私の完全なのViewControllerコードです:あなたはWKWebView
にconfig
を割り当てる必要が
import UIKit
import WebKit
class scrapedBrowser: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
var progressView: UIProgressView!
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
required init?(coder aDecoder: NSCoder) {
let config = WKWebViewConfiguration()
let scriptURL = Bundle.main.path(forResource: "hideSections", ofType: "js")
let scriptContent:String?
do {
scriptContent = try String(contentsOfFile: scriptURL!, encoding: String.Encoding.utf8)
}
catch _ {
scriptContent = nil
}
let script = WKUserScript(source: scriptContent!, injectionTime: .atDocumentStart, forMainFrameOnly: true)
config.userContentController.addUserScript(script)
super.init(coder: aDecoder)
self.webView?.navigationDelegate = self
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "http://yourwebsite.com/")!
let request = URLRequest(url: url)
webView.load(request)
webView.allowsBackForwardNavigationGestures = true
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
title = webView.title
}
}
JSContextには、後で何をするのに役立つかについての参照がいくつかあります。 https://developer.apple.com/reference/javascriptcore/jscontext [ここ](https://stackoverflow.com/a/40730365/4891259)にすばやい3スレッドがあります –