草庐IT

javascript - 释放 Javascript 中未附加的 DOM 节点使用的内存

作为我的应用程序的一部分,我将一组不会同时显示的小型Dom节点放在一起。我将它们存储在一个内部数组中。用户可以调用他们的显示,在这种情况下,我将它们重新设置为用于显示它们的div。这一切都很好。但是当需要用新的替换它们时,我想销毁旧的(有效地释放它们)。否则,随着时间的推移,内存使用量可能呈指数级增长。如何强制浏览器js引擎执行此操作?只是将我的Dom节点数组中的每个项目都设置为null就足够了吗?还有什么我必须做的吗?或者也许我根本不必担心这个? 最佳答案 如果您将每个项目设置为null,它们将被自动垃圾回收。

javascript - 是否可以编写一个使所有浏览器标准兼容的 JavaScript 库?

我不是JavaScript高手,但是否可以创建一个可嵌入的JavaScript文件,使所有浏览器标准兼容?就像强制每个浏览器正确解释代码的所有已知JavaScript黑客的集合一样?例如,IE6无法识别CSS中除链接之外的任何内容的:hover伪类,但是存在一个JavaScript文件可以找到对:hover的所有引用并应用强制IE6正确执行的hack,允许我按我应该的方式使用悬停命令。每个网站管理员都必须花费大量的时间(以及金钱)来学习所有这些技巧。想象一下,如果有一个开源元素,其中所有要做的就是在header中添加一行嵌入代码,然后他们就可以根据公认的Web标准(XHTMLStric

javascript - 在 Javascript 中检索表单的 "name"属性,而名称为 "name"的输入存在

我有类似这样的HTML结构:我想使用跨浏览器解决方案在Javascript中检索表单的名称属性。显然,document.getElementById("hello").name不会工作,因为它会返回相应的输入对象。在chrome下,以下代码有效,但我没有成功找到InternetExplorer8的等效代码document.getElementById("hello").getAttribute("name")提前致谢!弗雷德里克 最佳答案 我觉得应该可以document.getElementById("hello").attribu

Javascript:DOM 异常:INVALID_CHARACTER_ERR (5)

我使用新的IE9测试了我的网站,但我收到错误消息INVALID_CHARACTER_ERR(5)。在IE9中,开发人员工具突出显示了这一行。谁能帮我解决这个错误?错误行this.iframe=document.createElement('');FunctionCode__createDivs:function(){this.divs_transparentDiv=document.createElement('DIV');this.divs_transparentDiv.className='modalDialog_transparentDivs';this.divs_transpa

javascript - 将 element.id 设置为副作用是不好的做法吗?

我正在插件/库中编写一个小的缓存函数。它接受一个HTMLElement并返回一个Decorator。returnfunction_cache(elem){if(elem.id===""){elem.id=PLUGIN_NAME+"_"+uid++;}if(cache[elem.id]===void0){cache[elem.id]=_factory(elem);}returncache[elem.id];}在这里,我通过HTMLElement的id将一些昂贵的操作存储在缓存中。这是一个O(1)查找,但它使用了设置elem.id并产生副作用的“不良做法”。另一种方法是在缓存中查找O(N)

javascript - 多个 DOM appendChild 的速度/效率

我必须一次创建七个div元素-包含A1、A2、A3和A4的容器A,然后是A2中的A2a和A2b。我正在多次调用这个小函数:functionu1(t,i,c,p){//type,id,class_name,parent_idvartag=document.createElement(t);//Createnodetobeappendedtag.id=i;tag.className=c;document.getElementById(p).appendChild(tag);}我的问题:是否有一种更省时的方法将这七个捆绑在一起,然后只执行一个DOM追加?还是innerHTML是一个不错的选择

javascript - 如何对与 DOM 元素交互的 Javascript 代码进行单元测试

背景:我来自Java背景,所以不太熟悉Javascript。我们计划将JavaScript单元测试引入到我们现有的(遗留)代码和future的工作中。我们主要是一家java商店(Spring、Weblogic等)。我们正在寻找能够让我们与IDE(IntelliJidea)和声纳良好集成的选项,并能够将它们作为持续集成的一部分运行。JsTestDriver似乎符合所有条件。问题:我们现有的许多javascript代码是a)嵌入在JSP中和b)利用jQuery直接与页面元素交互。我们应该如何着手测试一个严重依赖DOM的函数。以下是我正在谈论的函数的一些代码示例:functionenable

javascript - 如何使用 jquery 延迟对象检查元素是否在 DOM 中?

我想知道是否可以使用jQuery延迟对象来测试元素是否在DOM中。这是我的想法:functionchkDOM(selector){if$(selector){returndeferred.promise();}}$.when(chkDOM(selector)).then(function(){//dosomething});我不太清楚如何编写代码来实现这一点,但我希望我的问题是有道理的。如果我能让这部分正常工作,那么我基本上可以延迟某些jquery插件的调用,以便它们真正正常运行。谢谢! 最佳答案 我假设您正在运行一个定期检查选择器

javascript - 是否有一种纯 Javascript 方法可以将一个函数应用于多个元素的事件?

我想使用纯Javascript将单个函数绑定(bind)到多个事件。在jQuery中我会使用:$('.className').click(function(e){//dostuff});所以我尝试使用纯JS:document.getElementsByClassName('className').onclick=function(e){//dostuff};这不起作用,因为getElementsByClassName返回一个数组,而不是DOM对象。我可以遍历数组,但这似乎过于冗长而且似乎没有必要:vartopBars=document.getElementsByClassName('c

javascript - 清除不再引用且从未添加到文档中的元素

假设我创建了一个新元素:letcanvas=document.createElement('canvas');现在,稍后在脚本中,我删除了对它的所有JS引用。canvas=null;Canvas元素本身是否还存在,占用内存?或者它会像任何其他未引用的对象一样被垃圾收集吗?请注意,我实际上并没有将它添加到文档中。 最佳答案 Doestheelementitselfstillexist,takingmemory?Orwillitbegarbagecollectedlikeanyotherunreferencedobject?是的,暂时还