2015-07-10 24 views
0

我在WKWebView中顯示網頁。要隱藏頭像或側邊欄等元素,我正在使用JavaScript。問題是我對同一網站的各種頁面使用一個腳本,而對於不同類型的頁面,頁面元素也不同。如果我做這樣的事情:在WKWebView中修改不可變DOM元素

let scriptURL = NSBundle.mainBundle().pathForResource("myscript", ofType: "js") 
    let scriptContent = String(contentsOfFile:scriptURL!, encoding:NSUTF8StringEncoding, error: nil) 
    let script = WKUserScript(source: scriptContent!, injectionTime: .AtDocumentEnd, forMainFrameOnly: true) 
    config.userContentController.addUserScript(script) 

...

document.getElementById("header").style.display = "none"; 

一個不存在的元素,它出現了錯誤和JavaScript的其餘部分沒有得到應用。

回答

1

你得檢查一下該元素是否是繼續之前有效。而不是把if語句隨處可見,你可以定義一個函數像這樣:

var setElementDisplayStyle = function(id, style) { 
    var element = document.getElementById(id); 
    if(element) element.style.display = style; 
} 

用法:

setElementDisplayStyle("header", "none"); 
0

你想對這樣的事情

var header = document.getElementById("header") 
if (header) { 
    header.style.display = "none"; 
}