我们在工作场所就此进行了一些讨论,有些人支持这种行为,而有些人则反对。想听听你们的观点:
<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等浏览器不会删除'script'标签。但是,document.getElementsByTagName('script').length返回0!
要理解我的意思,请在上面的代码中添加alert(document.getElementsByTagName('script').length);
在 document.body.removeChild(document.getElementsByTagName('div')[0]);
之前和之后。