在 Swift 中使用 JS 隐藏 WKWebView 集合元素

Posted

技术标签:

【中文标题】在 Swift 中使用 JS 隐藏 WKWebView 集合元素【英文标题】:Using JS in Swift to hide WKWebView collection elements 【发布时间】:2019-01-28 20:51:38 【问题描述】:

我有一个已加载到 WKWebView 中的网站。我想隐藏这个网站的标题,以便我可以使用我在情节提要中构建的本机标题。 header 元素只能由类引用(即“header-layout-bar”)。

我一直使用此代码作为参考以隐藏标题。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 
    print("finishload")
    let element = "header-layout-bar"
    let removeElementScript = "var element = document.getElementsByClassName('\(element)'); element.parentElement.removeChild(element); console.log(element);"
    webView.evaluatejavascript(removeElementScript)  (response, error) in
        debugPrint("Am here")
    

当我在控制台中打印出元素以查看它是否已被选中时,它会打印一个空的 html 集合数组。以这种方式删除它不会隐藏它。

我在这个主题上尝试了几种变体都无济于事(例如,使用 getElementsByTagName 选择它)。

没有任何作用。有人可以提供解决方案吗?

【问题讨论】:

【参考方案1】:

你可以尝试用 css 隐藏它:

let removeElementScript = "document.querySelector('.header-layout-bar').style.display='none';"
webView.evaluateJavaScript(removeElementScript)  (response, error) in
    debugPrint("Am here")

【讨论】:

以上是关于在 Swift 中使用 JS 隐藏 WKWebView 集合元素的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 hidesBackButton 隐藏导航栏中的后退按钮

webView在swift中隐藏内容

如何在 Swift 中隐藏第一个 ViewController 的导航栏?

Swift:在 UIWebview Scroll 上隐藏 UIStackView

在滚动视图中动态隐藏状态栏时滞后/屏幕冻结(Swift 3)

如何在 IQKeyboardManager iOS Swift 3 中隐藏工具栏