我正在制作一个在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");
感谢您的帮助。
答案 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是唯一的。