使用 JavaScript 删除 head 标签内的 noscript 标签
Remove a noscript tag inside the head tag with JavaScript
我正在尝试使用 JavaScript 删除<noscript>
标签。但到目前为止,每一次尝试都失败了。
我试过这些:
// The noscript tag has a id. I'm accessing it over this id
var noscript = window.document.getElementById("noscript_with_id");
noscript.parentNode.removeChild(noscript); // noscript.parentNode is null
noscript.outerHTML = ""; // doesn't do anything
noscript.innerHTML = ""; // doesn't do anything
我不能使用 jQuery。只是普通的JavaScript。
由于我正在通过特定 ID 访问元素并使用它的内容,因此有效的解决方案可能是更改 ID 或清空内容。我需要删除它,因为使用该元素的代码可能会执行多次。
noscript 标签位于<head>
标签内。我用它来异步加载一些样式表。
我设置了一个有问题的页面。 https://blitz.icon-craft.net/layout_test/
检查控制台并 https://blitz.icon-craft.net/includes/js/loadCSS.js
(我想指出的是,这个网站实际上使用了jQuery。但我计划在不使用它的网站上使用该脚本。仅仅对于这个小脚本,包括jQuery没有任何意义。
假设<head>
标签是父标签。
var noscript = document.getElementsByTagName('noscript');
var parent = document.getElementsByTagName('head')[0];
for(var i in noscript) {
parent.removeChild(noscript[i]);
}
我在SO网站上对此进行了测试,它起作用了。noscript
标记位于 body
标记内,因此选择body
标记的代码明显不同。
如果noscript
标记具有不同的父标记,它将失败。只有范围限定为所选父级的那些才会被删除。
我想出了问题所在。删除元素的工作方式就像这里多次描述的那样,就像我所做的那样。
问题是我更改了父级的内容(在本例中为 <head>
标签),因此我保存在变量中的对象变得无效。
这是不起作用的代码:
var noscript = window.document.getElementById("some_id");
var head = window.document.getElementsByTagName("head")[0];
head.innerHTML += noscript.innerHTML; // After that noscript is no longer valid
head.removeChild(noscript); // Won't work
以下方法将起作用:
var noscript = window.document.getElementById("some_id");
var head = window.document.getElementsByTagName("head")[0];
var content = noscript.innerHTML;
head.removeChild(noscript);
head.innerHTML += content;
无论如何,感谢您的帮助。
首先,你需要确保在调用javascript时标签存在。我通过等到所有元素、图像和脚本都加载完毕来做到这一点。
接下来,您不需要使用 id - 您可以使用任意数量的方法获取它。getElementsByTagName 返回的 NodeList 是实时的,因此,更改大小以反映对其所表示的元素集合的操作 - 这就是为什么只需要一次调用即可getElementsByTagName
。
我忘记了具体细节,但我前几天读到了它。 querySelector/querySelectorAll可能是奇怪的一个 - 返回一个不会像文档一样更改的数组。邓诺,无论如何,这里可能大部分都无关紧要。
下面是一个工作示例:
编辑:代码已更改。(1) 在按下按钮时触发,这样您就可以在浏览器 JS 工具的 DOM 查看器中看到效果。(2)将noscript标签移到头部
<!doctype html>
<html>
<head>
<noscript>You appear to have javascript disabled</noscript>
<script>
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded(evt)
{
// nukeNoscripts();
}
function nukeNoscripts()
{
var tgtTags = document.getElementsByTagName('noscript');
alert("Num of noscript tags: " + tgtTags.length);
var tgt = tgtTags[0];
tgt.parentNode.removeChild(tgt);
alert("Num of noscript tags: " + tgtTags.length);
}
</script>
</head>
<body>
<button onclick='nukeNoscripts()'>NUKE</button>
</body>
</html>
使用 JavaScript 删除 noscript 标签
var noscr = document.getElementsByTagName('noscript').length;
for(var yh = 0;yh<noscr;yh++) {document.getElementsByTagName('noscript')[0].remove();}
没有一个答案对我有用,我的身体里有"noscript"标签。下面的代码最终有效:
var elem = document.querySelector('noscript');
elem.parentNode.removeChild(elem);
- 在<页眉>标签
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- iframe正在添加标签,需要删除它们
- 如何自动调整标签的高度以适应内容
- Jquery标签插件粘贴问题
- Twitter引导程序Typeahead-Id&标签
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- Morris.js折线图x轴标签在调整大小后消失
- JavaScript goto 标签如何使用内部循环
- 显示某个用户ID的某个标签的30张Instagram图片
- 标签客户端的设置值
- 谷歌图表显示所有标签
- 如何在图片和边缘之间居中设置标签
- 在Datatables中设置本地化后,需要更改标签文本
- 第二组标签及其内容赢得'默认情况下t加载
- 禁用JavaScript,<noscript>标签,我们可以做验证
- 如何在谷歌跟踪代码管理器 noscript 标签中参数化容器 id
- noscript标签在不同浏览器中的处理方式
- 解析& lt; img>SRC属性在