草庐IT

javascript - 使用 QUnit(或其他单元测试工具)测试 Maps/Sets

我们如何断言ES6Maps和Sets的相等性?例如://ES6Mapvarm1=newMap();m1.set('one',1);varm2=newMap();m2.set('two',2);assert.deepEqual(m1,m2);//outputs:passed.//ES6Setvars1=newSet();s1.add(1);vars2=newSet();s2.add(2);assert.deepEqual(s1,s2);//outputs:passed.目的是断言Sets/Maps的元素是相等的。这两个断言都应该失败。是否有deepEqual的等价物?对于集合/map?换

javascript - 如何使 CSS 变换影响其他元素的流动

我使用带有transform属性的CSStransitions来在添加和删除元素时缩小元素。然而,这样做的一个问题是该属性不会影响其他元素的流动,因此看起来好像被删除的元素缩小了,然后其余元素突然跳了起来。如果我要为height属性设置动画而不是使用变换,这会很好,但是在实际使用中我使用的是可变高度的元素,所以我不知道我可以在什么高度之间设置动画。编辑:人们建议为height属性(如上所述不起作用)或max-height属性设置动画.max-height属性将在一定程度上起作用,但是您无法完美地对齐时间,因为转换会不断调整max-height属性超过元素的实际高度直到过渡时间结束。这些

javascript - 处理 $.ajax 请求中的其他状态码

在下面的代码中,我正在处理状态代码200和401。如果我想将控制直接交给一个处理除200和401之外的所有代码的函数,我该怎么办?$.ajax({type:"POST",dataType:"json",data:POSTData,url:'http://localhost/api/user/authenticate',statusCode:{200:function(){alert("ok");},401:function(){alert("InvalidCredentials");}}}); 最佳答案 尝试这样的事情:$.ajax

javascript - PhoneGap 无法从媒体 API 中获取持续时间(),但其他方法有效

我正在使用PhoneGap构建一个音频媒体记录器/播放器。一切都很顺利,但我遇到了一个我似乎无法熨烫的皱纹。my_media.play();确实在我的Eclipse或XCode控制台中播放没有错误的媒体,这就是显示-1的警报令人费解的原因。我希望my_media.getDuration();返回我尝试播放的文件的持续时间。我的try/catchblock没有抛出错误,我对此感到很困惑。Here'sthePhoneGapdocumentationonMedia.getDuration().functionplayAudio(){$('#btnStopRecording').removeC

javascript - 一个失败的测试会导致其他异步测试失败

我有一个非常基本的karma/jasmine设置,其中一个测试套件包含两个测试。我希望第一个测试失败,第二个测试通过。describe("Thesystem",function(){it("shouldfail",function(){expect(true).toBe(false);});it("shouldsucceed",function(done){setTimeout(function(){expect(1).toBe(1);done();},10);});});但是,当我在浏览器中运行这些测试并单击“调试”按钮打开KarmaDEBUGRUNNER时,我看到两个测试都失败了,

javascript - Angular.js 对 ng-repeat 的一项进行更改,导致所有其他项上的过滤器运行

我仍然遇到同样的问题,ng-repeat中的过滤器和函数一直被调用。这里的例子,http://plnkr.co/edit/G8INkfGZxMgTvPAftJ91?p=preview,任何时候你改变一行的东西,someFilter过滤器被调用1000次。显然这是因为子作用域上的任何更改都会冒泡到其父作用域,导致$digest运行,从而导致所有过滤器运行(https://stackoverflow.com/a/15936362/301596)。那正确吗?我怎样才能防止它在我的特定情况下发生?如何让它只在发生变化的项目上运行?在我的实际用例中,即使更改甚至不在ng-repeat的项目上,也

Javascript:检查是否可以通过组合数组中的其他字符串来重新创建字符串?

我正在尝试找出检查是否可以通过组合数组中的其他字符串来创建特定字符串的最佳方法。其他字符串可以是任意长度,包括一个字符。此外,其他字符串中的字符可以重新排序。因此,如果我们正在寻找单词“dodge”并且我们的字符串数组是['god','house','d','e','cat','c','r','jump'],我们会有一场比赛,因为我们可以组合'god'、'd'和'e'中的字母来创建'dodge'。如果数组包含“dot”而不是“d”,我们将无法匹配,因为我们必须使用我们重新组合的每个单词中的所有字符(我们必须使用“o”和“t'也是如此)。我还想知道哪些词被用来创建指定的词,所以如果有匹配

javascript - 检测浏览器关闭/导航到其他页面并注销的最佳方法

我正在用GWT编写应用程序,我需要检测用户何时离开我的应用程序或何时关闭浏览器窗口(onUnload事件)并执行注销(session失效和其他一些清理任务)。注销操作由servlet执行。我目前通过连接到onUnload()事件并打开一个指向注销servlet的新窗口来执行此操作。有更好的方法吗?欢迎任何其他建议。 最佳答案 看起来GWT确实为此举办了一个事件。ClosingEvent.看起来你需要实现一个ClosingHandler 关于javascript-检测浏览器关闭/导航到其他

javascript - Squire 正在打破其他测试

我正在使用Karma、Jasmine、Jasmine.Async、Sinon和Chai。好消息...这个测试工作正常。依赖关系被mock,spy被调用,故意破坏测试对象导致测试失败。define(['chai','squire'],function(chai,Squire){varshould=chai.should(),async=newAsyncSpec(this),subject,injector=newSquire();describe('EventsView',function(){describe('whenaneventisclicked',function(){varm

javascript - 对远程站点的本地 AJAX 调用在 Safari 中有效,但在其他浏览器中无效

我正在维护一个使用Javascript的网站。该脚本使用jQuery并从通常托管站点的服务器加载一些内容。为了在维护网站时方便,我在我的iMac上运行网站的本地副本。当我使用Safari时,这工作得很好。但是Firefox、Opera和Chrome拒绝工作。我想这是因为跨域策略。(我无法用IE对此进行测试,因为IE必须在我的iMac上的虚拟机中运行,因此无法访问任何本地文件)在Firefox和其他浏览器中是否有设置可以告诉浏览器可以使用本地javascript从本地html页面ajax加载位于远程服务器上的文件?简而言之:这是我的html页面:sometitle这是myScript.j