我们一直在我们的工作场所就此进行讨论,有人赞成也有人反对。想听听你们的意见:
<html>
<body>
<div>
Test!
<script> document.body.removeChild(document.getElementsByTagName('div')[0]); </script>
</div>
</body>
</html>
上面的脚本应该工作并做它应该做的事吗?首先,让我们看看这里发生了什么:
我在 <div>
中有一个 javascript元素。此 javascript 将删除 body 中的子节点,该子节点恰好包含脚本本身所在的 div。
现在,上面的脚本在 Firefox、Opera 和 IE8 中运行良好。但是IE6和IE7提示无法打开页面。
让我们不要讨论 IE 应该如何处理这个问题(他们已经接受它作为一个错误,因此在 IE8 中修复了它)。这里的重点是因为'SCRIPT' 标签本身是DOM 的一部分,它应该被允许做这样的事情吗?在这样的操作之后它还应该存在吗?
编辑:
如果我运行上面的代码,Firefox、Opera、IE9 等不会删除“脚本”标签。但是,document.getElementsByTagName('script').length 返回 0!
要理解我的意思,请添加 alert(document.getElementsByTagName('script').length);
前后document.body.removeChild(document.getElementsByTagName('div')[0]);
在上面的代码中。
最佳答案
如果问题是,“是否应该允许脚本标签自行删除?”我会这么认为。毕竟,脚本标签可以使浏览器导航到另一个页面,在这种情况下,整个页面(包括此类脚本标签)将从内存中删除。
关于javascript - 是否应允许 "script"标签自行删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2486144/