【问题标题】:Modifying nonexistant DOM elements in WKWebView修改 WKWebView 中不存在的 DOM 元素
【发布时间】: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 的其余部分不会被应用。

【问题讨论】:

    标签: javascript ios swift wkwebview


    【解决方案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";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多