从iOS应用程式关闭模式

时间:2018-07-03 16:05:35

标签: javascript ios wkwebview

我正在制作一个在WKWebWiew内部评估JavaScript的应用。我的问题是在我的webView内显示了一个模态,它只有id = modal-form。如何使用JS关闭它?

例如,我尝试过的操作类似:webView.evaluateJavaScript("document.getElementById('modal-form').setAttribute(\"style\", \"display:none\");"),但是它并不能正常工作。

没有Swift代码,它看起来像:document.getElementById('modal-form').setAttribute("style", "display:none");

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

getElementByClass不是JavaScript运行时上存在的方法(或者至少不是“本机”)。应该是getElementsByClassName,它返回一个数组,然后您从该数组中获取所有内容。

如果模态是该类的唯一元素,则应使用以下方法将其隐藏:

var elements = document.getElementsByClassName('modal-form');
elements.forEach(function(element) {
    element.setAttribute('style', 'display: none');
});

或更短:

document.getElementsByClassName('modal-form').forEach(function(e) { e.setAttribute('style', 'display: none') });

最后,对于您的WKWebView,这应该有效:

webView.evaluateJavaScript("document.getElementsByClassName('modal-form').forEach(function(e) { e.setAttribute('style', 'display: none') });")

如果该特定模式具有唯一的id并使用document.getElementById()进行引用应该会好得多。 id对于HTML是唯一的。