2017-01-25 6 views
2

Я пытаюсь исключить некоторые элементы веб-страницы, такие как боковая панель, введя новое правило CSS в javascript, я создал новый файл javascript в xcode с новым тегом стиля, чтобы скрыть боковую панель что я осмотрел в Google инструмент разработчика Chrome и закончился с этим кодом:Как вставить javascript в WKWebView в Swift 3

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

и созданный объект WKWebViewConfiguration, который имеет некоторые свойства, которые позволяют создать мост между машинным кодом и размещенного веб-контента, как описано here, но до сих пор не запуск этого скрипта.

Это мой полный код ViewController:

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 И здесь есть быстрый поток 3 (здесь) (https://stackoverflow.com/a/40730365/4891259) –

ответ

0

Вам нужно назначить config к WKWebView.

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