无论如何在iPad加载页面后用javascript删除所有<a href=>标签?

Mat*_*pen 2 html javascript iphone uiwebview ipad

我知道在使用UIWebView(这是我正在使用的)在iPad上加载页面之后我可以运行一行javascript代码,但我不知道我可以输入什么来删除所有标签.我还希望能够仅对页面的某些部分执行此操作,例如仅删除某个标记内的标记.

Bal*_*usC 8

您可以使用标记名称获取所有元素document.getElementsByTagName().所有链接都有标记名称a.您可以通过将其display样式设置为可视地删除它们none.

var elements = document.getElementsByTagName('a');
for (var i = 0; i < elements.length; i++) {
    elements[i].style.display = 'none';
}
Run Code Online (Sandbox Code Playgroud)

要删除某个标记中某个标记getElementsByTagName()的元素,只需调用相关元素即可.假设您只想隐藏所有链接<li>:

var listitems = document.getElementsByTagName('li');
for (var i = 0; i < listitems.length; i++) {
    var anchors = listitems[i].getElementsByTagName('a');
    for (var j = 0; j < anchors.length; j++) {
        anchors[j].style.display = 'none';
    }
}
Run Code Online (Sandbox Code Playgroud)

element.parentNode.removeChild(element)也是一个很好的,但它在标准for循环中不能很好地工作.你需要向后循环:

var elements = document.getElementsByTagName('a');
for (var i = elements.length; i-- > 0;) {
    var element = elements[i];
    element.parentNode.removeChild(element);
}
Run Code Online (Sandbox Code Playgroud)

根据明确的功能要求进行更新:您是否希望用表示链接原始内容的文本节点替换 link元素?你可以用Node.replaceChild()它.这是一个启动示例:

var elements = document.getElementsByTagName('a');
for (var i = elements.length; i-- > 0;) {
    var element = elements[i];
    var text = document.createTextNode(element.firstChild.nodeValue);
    element.parentNode.replaceChild(text, element);
}
Run Code Online (Sandbox Code Playgroud)