javascript
  • swift3
  • wkwebview
  • 2017-01-25 37 views 2 likes 
    2

    我想在整個的JavaScript注入新的CSS規則排除某些網頁元素,如側邊欄,我創建在Xcode一個新的JavaScript文件與一個新的樣式標籤隱藏側邊欄我考察了谷歌Chrome瀏覽器開發工具,並使用此代碼結束:如何注入一個javascript在WKWebView斯威夫特卡倫特3

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

    ,創造WKWebViewConfiguration對象持有的一些屬性,允許本地代碼和託管Web內容描述here但仍然沒有之間的橋樑的創作讓這個腳本運行。

    這是我的完整視圖控制器代碼:

    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

    您需要分配configWKWebView

    webView = WKWebView(frame: CGRect.zero, configuration: config) 
    
    相關問題