Tag: JavaScript

javascript domready?

我知道我可以使用不同的框架,如原型或jQuery的附加函数的window.onload,但不是我在找什么。 我需要类似.readyState的东西,这样我可以做这样的事情: if(document.isReady){ var id = document.getElem … } 除了使用框架之外还有别的方法吗?

通过原型定义方法vs在构造函数中使用它 – 真的是性能差异?

在JavaScript中,我们有两种方法来创build一个“类”并赋予其公共职能。 方法1: function MyClass() { var privateInstanceVariable = 'foo'; this.myFunc = function() { alert(privateInstanceVariable ); } } 方法2: function MyClass() { } MyClass.prototype.myFunc = function() { alert("I can't use private instance variables. :("); } 我读过无数次的人说 ,使用方法2更有效,因为所有的实例共享相同的函数副本,而不是每个都获得自己的副本。 通过原型定义函数有一个巨大的缺点 – 它使得不可能有私有的实例variables。 尽pipe从理论上讲,使用方法1给每个对象的实例提供了自己的函数副本(因此使用更多的内存,更不用说分配所需的时间了) – 实际上实际发生了什么? 看起来像一个优化的Web浏览器可以很容易地认识到这个非常普遍的模式,并且实际上所有的对象实例引用通过这些“构造函数”定义的相同的函数副本。 然后,如果稍后显式更改,则只能为该实例提供自己的副本。 任何见解 – 或者甚至更好的现实世界的经验 – 关于两者之间的performance差异将是非常有用的。

迭代数组而不阻塞UI的最佳方式

我需要迭代一些大型数组,并将它们存储在来自API调用的骨干集合中。 什么是最好的方式做到这一点,而不使循环导致界面变得没有反应? ajax请求的返回也会因为返回的数据太大而阻塞。 我想我可以分解它,并使用setTimeout使它在较小的块中asynchronous运行,但有一个更简单的方法来做到这一点。 我认为一个networking工作者将是好的,但它需要改变保存在UI线程上的一些数据结构。 我已经尝试使用这个来做ajax调用,但是当它将数据返回到UI线程时,仍然有一段时间,接口没有响应。 提前致谢

Javascript函数添加X个月到一个date

我正在寻找最简单,最干净的方法来将X月添加到Javascriptdate。 我宁愿不处理今年的滚动,也不得不写我自己的function 。 有没有内置的东西可以做到这一点?

在contentEditable div中获取插入位置

我find了很多很好的关于如何在contentEditable DIV中设置光标或插入符的位置的交叉浏览器,但没有find如何获取或查找位置的信息。 我想要做的是在键盘上知道插入符号的位置。 所以,当用户input文本时,我可以在任何时候知道它的光标在div中的位置。 编辑:我正在寻找div内容(文本)内的INDEX,而不是光标坐标。 <div id="contentBox" contentEditable="true"></div> $('#contentbox').keyup(function() { // … ? });

摩卡/柴期望不会抛出抛出的错误

我有问题让柴的expect.to.throw工作在我的node.js应用程序的testing。 testing在抛出的错误上保持失败,但是如果我试着包装testing用例,并捕获和声明被捕获的错误,它就可以工作。 是否expect.to.throw不工作像我认为应该或什么? it('should throw an error if you try to get an undefined property', function (done) { var params = { a: 'test', b: 'test', c: 'test' }; var model = new TestModel(MOCK_REQUEST, params); // neither of these work expect(model.get('z')).to.throw('Property does not exist in model schema.'); expect(model.get('z')).to.throw(new Error('Property does not exist in model schema.')); […]

我如何解码一个string与逃脱unicode?

我不确定这是什么,所以我无法find它。 我怎样才能解码一个unicode从http\u00253A\u00252F\u00252Fexample.com到http://example.com与JavaScript的string? 我试过unescape , decodeURI ,和decodeURIComponent所以我想唯一剩下的就是stringreplace。 编辑:string是不是键入,而是从另一段代码的子string。 所以要解决这个问题,你必须从这样的事情开始: var s = 'http\\u00253A\\u00252F\\u00252Fexample.com'; 我希望显示为什么unescape()不起作用。

如何获得JSvariables保留页面刷新后的值?

是否有可能永久更改一个JavaScriptvariables? 如在,如果我设置variablesX,使等于1.然后onClickbutton更改该variables为2.我怎样才能得到该variables保持在刷新页面2?

改变html5video标签的来源

我试图build立一个video播放器,无处不在。 到目前为止,我会与: <video> <source src="video.mp4"></source> <source src="video.ogv"></source> <object data="flowplayer.swf" type="application/x-shockwave-flash"> <param name="movie" value="flowplayer.swf" /> <param name="flashvars" value='config={"clip":"video.mp4"}' /> </object> </video> (如在几个网站上看到的,例如所有人的video ),那么好。 但现在我也想要一些播放列表/菜单以及video播放器,从中我可以select其他video。 那些应该立即在我的玩家内部打开。 所以我将不得不“dynamic地改变video的来源”(如在dev.opera.com/articles/everything-you-need-to-know-html5-video-audio/上看到的那样) – 让我们看看另一部电影“)与JavaScript。 让我们暂时忘记FlashPlayer(也就是IE)的一部分,稍后我会试着去处理。 所以我的JS改变<source>标签应该是这样的: <script> function loadAnotherVideo() { var video = document.getElementsByTagName('video')[0]; var sources = video.getElementsByTagName('source'); sources[0].src = 'video2.mp4'; sources[1].src = 'video2.ogv'; video.load(); } </script> 问题是,这并不适用于所有的浏览器。 即firefox = O有一个很好的页面,在那里你可以观察到我遇到的问题: http […]

在expression式之前,代字号是干什么的?

var attr = ~'input,textarea'.indexOf( target.tagName.toLowerCase() ) ? 'value' : 'innerHTML' 我在一个答案中看到了,我从来没有见过它。 这是什么意思?