Tag: JavaScript

在jQuery中检测输入变化?

当在input使用jQuery .change时,事件只会在输入失去焦点时被触发 在我的情况下,只要输入值改变,我需要调用服务(检查值是否有效)。 我怎么能做到这一点?

如何检索HTML元素的实际宽度和高度?

假设我有一个<div> ,我希望在浏览器的显示(视口)中居中。 为此,我需要计算<div>元素的宽度和高度。 我应该使用什么? 请包括浏览器兼容性的信息。

YouTube iframe API:如何控制已经在HTML中的iframe播放器?

我想要能够控制基于iframe的YouTube播放器。 这些玩家将已经在HTML中,但我想通过JavaScript API来控制它们。 我一直在阅读iframe API的文档,该文档解释了如何使用API​​向页面添加新视频,然后使用YouTube播放器功能控制它: var player; function onYouTubePlayerAPIReady() { player = new YT.Player('container', { height: '390', width: '640', videoId: 'u1zgFlCw8Aw', events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } 该代码创建一个新的玩家对象,并将其分配给“玩家”,然后将其插入到#container div中。 然后我可以在“播放器”上操作,并在其上调用playVideo() , pauseVideo()等。 但是我希望能够在已经在页面上的iframe播放器上进行操作。 我可以很容易地用旧的嵌入方法来做到这一点,例如: player = getElementById('whateverID'); player.playVideo(); 但是这不适用于新的iframe。 我怎样才能分配页面上的iframe对象,然后使用它的API函数?

JavaScript中的函数重载 – 最佳实践

在Javascript中伪造函数重载的最好方法是什么? 我知道这是不可能的在Javascript中重载函数,如其他语言。 如果我需要两个使用foo(x)和foo(x,y,z)这是最好的/首选的方法: 首先使用不同的名称 使用可选参数,如y = y || 'default' y = y || 'default' 使用参数数目 检查参数的类型 或者如何?

使用“Object.create”而不是“新”

JavaScript 1.9.3 / ECMAScript 5引入了Object.create ,道格拉斯·克罗克福德(Douglas Crockford)等人长期以来一直主张 。 如何用Object.create替换下面的代码中的new ? var UserA = function(nameParam) { this.id = MY_GLOBAL.nextId(); this.name = nameParam; } UserA.prototype.sayHello = function() { console.log('Hello '+ this.name); } var bob = new UserA('bob'); bob.sayHello(); (假设存在MY_GLOBAL.nextId)。 我能想到的最好的是: var userB = { init: function(nameParam) { this.id = MY_GLOBAL.nextId(); this.name = nameParam; }, sayHello: function() { […]

为什么++ ] ] + ]返回字符串“10”?

这是有效的,并返回JavaScript中的字符串"10" ( 更多示例 ): ++[[]][+[]]+[+[]] 为什么? 这里发生了什么?

Facebook如何禁用浏览器的集成开发者工具?

显然,由于最近发生的诈骗事件,开发者工具被人们利用来发布垃圾邮件,甚至用于“黑客”账户。 Facebook已经阻止了开发者工具,我甚至不能使用控制台。 他们是怎么做到的? 一个堆栈溢出帖子声称这是不可能的 ,但Facebook已经证明他们错了。 只要进入Facebook并打开开发者工具,在控制台中输入一个字符,这个警告弹出。 不管你输入什么,它都不会被执行。 这怎么可能? 他们甚至在控制台中阻止自动完成:

简单的英语中的Ukkonen后缀树算法

这一点我感觉有点厚。 我已经花了好几天的时间想把自己的头完全包裹在后缀树的构造中,但是因为我没有数学背景,所以很多的解释都是在我开始过度使用数学符号的时候解决的。 最接近我找到的一个很好的解释是使用后缀树的快速字符串搜索 ,但是他掩盖了不同的点,算法的某些方面仍然不清楚。 我相信,在这里Stack Overflow的这个算法的一步一步的解释对于除了我之外的其他许多人来说是非常宝贵的。 作为参考,这里是Ukkonen关于算法的论文: http : //www.cs.helsinki.fi/u/ukkonen/SuffixT1withFigs.pdf 到目前为止,我的基本理解是: 我需要迭代给定字符串T的每个前缀P. 我需要遍历前缀P中的每个后缀S并将其添加到树中 为了给树添加后缀S,我需要遍历S中的每个字符,迭代包括沿着一个以S中相同的一组字符C开始的现有分支,并且当我将一个边分割为后代节点时在后缀中达到不同的字符,或者如果没有匹配的边缘可以走下去。 当发现没有匹配的边缘向下走向C时,为C创建新的叶边。 基本算法似乎是O(n 2 ),正如在大多数解释中指出的那样,因为我们需要遍历所有的前缀,那么我们需要遍历每个前缀的每个后缀。 由于使用了后缀指针技术,Ukkonen的算法显然是独一无二的,尽管我认为这是我无法理解的。 我也无法理解: 确切何时以及如何分配,使用和更改“活动点” 算法的标准化方面正在发生什么 为什么我看到的实现需要“修复”他们正在使用的边界变量 这里是完整的C#源代码。 它不仅能够正常工作,而且支持自动封装,并呈现更好看的输出文本图形。 源代码和示例输出位于: https://gist.github.com/2373868 更新2017-11-04 多年以后,我发现了后缀树的新用法,并在JavaScript中实现了这个算法。 Gist在下面。 它应该是无bug的。 将其转储到一个js文件中, npm install chalk从相同位置npm install chalk ,然后使用node.js运行以查看一些丰富多彩的输出。 在同一个Gist中有一个精简的版本,没有任何的调试代码。 https://gist.github.com/axefrog/c347bf0f5e0723cbd09b1aaed6ec6fc6

用于TDD的JavaScript单元测试工具

我已经研究并考虑了许多JavaScript单元测试和测试工具,但一直未能找到合适的选项来保持TDD完全兼容。 那么,是否有一个完全符合TDD标准的JavaScript单元测试工具?

Angularjs未捕获错误:

我正在学习Angular.js,我无法弄清楚这个简单的代码有什么问题。 它看起来很好,但给我下面的错误。 **Error**: Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.14/$injector/modulerr?p0=app&p1=Error%3A%20…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.14%2Fangular.min.js%3A17%3A381) 在添加ng-app= "app" (我只是把它保存为ng-app )之前,它给了我下面的错误。 这是为什么? Error: [ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=Ctrl&p1=not%20a%20function%2C%20got%20undefined at Error (native) at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417 at Sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:19:510) at tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:20:78) at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:75:331) at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:57:65 at s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:7:408) at A (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:56:443) at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:299) at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:316) <!doctype html> <html ng-app="app"> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> </head> <body> <div ng-controller="Ctrl"> <input […]