Javascript 在webview中动态隐藏部分html

Javascript 在webview中动态隐藏部分html,javascript,ios,css,swift,Javascript,Ios,Css,Swift,我正在开发一个概念验证功能,以添加隐藏web视图中加载的网页的一部分的功能,但我无法让它工作 我在UIWebview扩展中有类似的东西,在webview完成加载时调用它: let dummyStyle = "var dummyStyle = document.createElement('style'); dummyStyle.innerHTML = 'div {display: none;}'; document.body.appendChild(dummyStyle); "

我正在开发一个概念验证功能,以添加隐藏web视图中加载的网页的一部分的功能,但我无法让它工作

我在UIWebview扩展中有类似的东西,在webview完成加载时调用它:

    let dummyStyle = "var dummyStyle = document.createElement('style'); dummyStyle.innerHTML = 'div {display: none;}'; document.body.appendChild(dummyStyle); "

    let classToHide = "content"
    let jsHideString = "var e = document.body.getElementByClassName('\(classToHide)'); e.style = dummyStyle; e.style.display = 'none';"
    self.stringByEvaluatingJavaScriptFromString(dummyStyle + jsHideString)
主要问题似乎是(通过safari/chrome开发工具检查)文档元素没有样式属性。即使我在控制台中手动设置它,当e.style.display='none'时它也不会更新

除了搜索元素id或类之外,我还希望尽量减少对最终用户web页面的假设

谢谢你阅读我的问题

使用工作解决方案编辑:

    let classToHide = "content"
    let jsHideString = " " +
        " var e = document.body.getElementsByClassName(\"\(classToHide)\")[0];" +
        "e.style.display = \"none\";"

    let DOMContentLoadedNotification = " " +
        "var addL = function addListener(obj, eventName, listener) { " +
            "if (obj.addEventListener) { " +
            "alert('added listener');" +
            "obj.addEventListener(eventName, listener, false); " +
            "} else { " +
            "alert('attactch event');" +
            "obj.attachEvent(\"on\" + eventName, listener); " +
            "};" +
            "};" +

        "var completion = function finishedDCL() { " +
            "alert('finishedDCL');" +
            jsHideString +
            "};" +

        "if (document.readyState == \"complete\" || document.readyState == \"loaded\") { " +
                "alert('document already loaded');" +
                jsHideString +
            "} else {" +
                "alert('document not loaded');" +
                "addL(document, \"DOMContentLoaded\", completion()); " +
"};"

    print("Webview: \(self.stringByEvaluatingJavaScriptFromString(DOMContentLoadedNotification))")

不生成样式表,只需直接操作DOM节点的
.style
属性

设置
nodeReference.style.display='none'

没有样式属性的问题一定是您没有等待DOM准备就绪。注意DOMContentLoaded事件


谢谢您提供的信息!