2017-01-25 16 views
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コードです:あなたはWKWebViewconfigを割り当てる必要が

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 
} 

} 
+1

JSContextには、後で何をするのに役立つかについての参照がいくつかあります。 https://developer.apple.com/reference/javascriptcore/jscontext [ここ](https://stackoverflow.com/a/40730365/4891259)にすばやい3スレッドがあります –

答えて

0

webView = WKWebView(frame: CGRect.zero, configuration: config) 
関連する問題