当前位置:  开发笔记 > 编程语言 > 正文

是否应该允许"脚本"标记自行删除?

如何解决《是否应该允许"脚本"标记自行删除?》经验,为你挑选了3个好方法。

我们一直在我们的工作场所讨论这个问题,其中一些反对行为,一些反对行为.想听听你们的意见:



Test!

上述脚本应该工作并执行它应该做的事情吗?首先,让我们看看这里发生了什么:

我有一个javascript在

元素内.这个javascript将删除正文中的子节点,该节点恰好包含脚本本身存在的div.

现在,上面的脚本在Firefox,Opera和IE8中运行良好.但IE6和IE7发出警告说他们无法打开页面.

我们不讨论IE应该如何处理这个问题(他们已经将其视为一个bug,因此在IE8中修复了它).这里的要点是因为'SCRIPT'标签本身是DOM的一部分,是否允许它做这样的事情?这样的手术后是否应该存在?

编辑:

如果我运行上面的代码,Firefox,Opera,IE9等不会删除'script'标记.但是,document.getElementsByTagName('script').length返回0!

要理解我的意思,请在上面的代码中添加alert(document.getElementsByTagName('script').length);前后document.body.removeChild(document.getElementsByTagName('div')[0]);.



1> Andras Vass..:

例如,自我移除可以很方便的一个例子是一些长的轮询技术,这些技术肯定会在几分钟后使DOM变大.

JavaScript框架添加和删除脚本元素作为日常例程的一部分.

例如,getScript()jQuery中,在文档头中放置一个脚本标记,并在评估后立即将其删除.

他们这样做是为了保持DOM清洁 - 否则标签会不必要地积累.评估后不再需要它们.

我看到的唯一缺点是调试 - 例如,带有Firebug的Firefox似乎丢失了这些脚本的下落,无法找到源代码行.(撰写本文时)



2> Will..:

如果问题是"应该允许脚本标记自行删除吗?" 我想是的.毕竟,脚本标记可以使浏览器导航到另一个页面,在这种情况下,整个页面(包括这样的脚本标记)将从内存中删除.



3> 小智..:

实际上你可以这样做:

var currentScript;
currentScript = document.currentScript || document.scripts[document.scripts.length - 1];
currentScript.parentNode.removeChild(currentScript);

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有