修改 WKWebView 中不存在的 DOM 元素
Posted
技术标签:
【中文标题】修改 WKWebView 中不存在的 DOM 元素【英文标题】:Modifying nonexistant DOM elements in WKWebView 【发布时间】:2015-07-10 19:16:18 【问题描述】:我在 WKWebView 中显示一个网页。为了隐藏标题或侧边栏等元素,我正在应用 javascript。问题是我对同一站点的不同页面使用了一个脚本,而不同类型页面的页面元素也不同。如果我这样做:
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");
【讨论】:
【参考方案2】:你想要这样的东西吗
var header = document.getElementById("header")
if (header)
header.style.display = "none";
【讨论】:
以上是关于修改 WKWebView 中不存在的 DOM 元素的主要内容,如果未能解决你的问题,请参考以下文章