2017-01-25 2 views
2

Ich versuche, einige Webseitenelemente wie sidebar auszuschließen, indem ich eine neue CSS-Regel in Javascript einfüge, erstellte ich eine neue Javascript-Datei in xcode mit dem neuen style-Tag, um die Seitenleiste auszublenden dass ich in Google chrome Entwickler-Tool überprüft und mit diesem Code beendet:Wie man ein Javascript in WKWebView in Swift 3 injiziert

var styleTag = document.createElement("style"); 
styleTag.textContent = '.sidebar {display:none;}'; 
document.documentElement.appendChild(styleTag); 

und erstellt WKWebViewConfiguration Objekt, das einige Eigenschaften besitzt, die die Erstellung der Brücke zwischen nativen Code und den gehosteten Web-Inhalten wie here erlauben aber noch nicht Dieses Skript wird ausgeführt.

Dies ist meine komplette Viewcontroller-Code:

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

Es gibt ein paar Verweise auf JSContext, die mit Ihrem Nachher helfen sollten. https://developer.apple.com/reference/javascriptcore/jscontext Und es gibt eine schnelle 3 Thread auf [hier] (https://stackoverflow.com/a/40730365/4891259) –

Antwort

0

Sie müssen config zum WKWebView zuzuweisen.

webView = WKWebView(frame: CGRect.zero, configuration: config) 
Verwandte Themen