我一直在阅读jQuery延迟和承诺,我看不出使用.then()&.done()成功回调之间的区别.我知道Eric Hynds提到.done()并.success()映射到相同的功能,但我猜是这样做的,.then()因为所有的回调都是在成功操作完成时调用的.
任何人都可以请你告诉我正确的用法?
我编写了一个jQuery插件,可以在桌面和移动设备上使用.我想知道是否有一种方法可以检测设备是否具有触摸屏功能.我正在使用jquery-mobile.js来检测触摸屏事件,它可以在iOS,Android等上运行,但我也想根据用户的设备是否有触摸屏来编写条件语句.
那可能吗?
我应该使用Protractor或Karma进行端到端测试吗?
Angular-seed使用Protractor/Selenium WebDriver进行E2E,但angular-phonecat教程使用业力.
我读到我应该使用Karma进行单元测试,使用Protractor进行E2E,看起来不错,但我想我会在这里要求得到其他开发者的意见.
我正在阅读有关文档片段和DOM重排的内容,并想知道它们看起来有多么document.createDocumentFragment不同,document.createElement因为在将它们附加到DOM元素之前,它们都不存在于DOM中.
我做了一个测试(下面),他们都花了相同的时间(大约95ms).猜测这可能是由于没有任何样式应用于任何元素,因此可能没有回流.
无论如何,基于下面的例子,我为什么要使用createDocumentFragment而不是createElement在插入DOM时使用两者之间的差异.
var htmz = "<ul>";
for (var i = 0; i < 2001; i++) {
htmz += '<li><a href="#">link ' + i + '</a></li>';
}
htmz += '<ul>';
//createDocumentFragment
console.time('first');
var div = document.createElement("div");
div.innerHTML = htmz;
var fragment = document.createDocumentFragment();
while (div.firstChild) {
fragment.appendChild(div.firstChild);
}
$('#first').append(fragment);
console.timeEnd('first');
//createElement
console.time('second');
var span = document.createElement("span");
span.innerHTML = htmz;
$('#second').append(span);
console.timeEnd('second');
//jQuery
console.time('third');
$('#third').append(htmz);
console.timeEnd('third');
Run Code Online (Sandbox Code Playgroud) 骨干模型上的initialize和constructor之间有什么区别.
当我扩展骨干模型(ParentModel)时,我使用initialize方法设置任何默认属性.但每当我基于ParentModel创建一个Model时,我都会使用构造函数来运行任何初始功能.我这样做是因为它有效,但有人在工作时问我为什么我同时使用初始化和构造函数,除了它有效之外我没有一个好的答案.我可以花时间阅读源代码来解决这个问题,但在这里提问并获得正确的答案似乎要容易得多.
var ParentModel = Backbone.Model.extend({
initialize : function() {
// code here
},
});
var Model = ParentModel.extend({
constructor : function (options) {
Backbone.Model.prototype.constructor.call(this, options);
// code here
},
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用Jasmine,请原谅新手问题但是在使用时是否可以测试对象类型toHaveBeenCalledWith?
expect(object.method).toHaveBeenCalledWith(instanceof String);
Run Code Online (Sandbox Code Playgroud)
我知道我可以做到这一点,但它正在检查返回值而不是参数.
expect(k instanceof namespace.Klass).toBeTruthy();
Run Code Online (Sandbox Code Playgroud) 如果这不是很清楚,但是在Git,我有一种方法可以通过名称查看分支上所有已更改的文件.据我所知,我可以使用git log查看在单个提交中已更改的文件,但我希望看到自创建分支以来已经更改的所有文件,通过多次提交.
有git diff但是这也列出了我想要比较的分支中的已更改文件.我想要一个命令,"显示此分支中所有已更改文件的文件名".
非常感谢
我仍然无法相信这是不可能的,但是有一种方法可以循环访问dom并查看使用'addEventListener'附加的所有事件处理程序.这篇文章和许多其他人说没有.
如果是这种情况,那么Chrome的检查员或Firebug等应用程序如何显示它们,他们会这样做?我猜他们可能会以某种方式增加dom的方法,以便他们可以跟踪绑定的内容.
以下ES6代码段无效.它曾经是有效的.我仍然可以在旧版本的Traceur中运行它,但最新的Babel和Traceur似乎不再喜欢数组中的for循环了.任何人都可以告诉我为什么它不再有效.
let people = [
{
"firstName": "Belinda",
"phone": "1-607-194-5530",
"email": "dignsissim.Maecenas.ornare@lacusAliquam.co.uk"
},
{
"firstName": "Elizabeth",
"phone": "1-155-446-1624",
"email": "cursus.et.magna@nislsemconsequat.edu"
}
]
let phones = [for({phone} of people) phone];
console.log(phones)
Run Code Online (Sandbox Code Playgroud)
下面的代码片段是有效的ES6,所以我知道for循环内部的破坏是正常的
for(let {phone} of people) {
console.log(phone)
}
Run Code Online (Sandbox Code Playgroud) 我试图从ajax请求获取响应头,但jQuery的getAllResponseHeaders xhr方法只显示"Content-Type"头.谁知道为什么?
这是响应标头
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:If-Modified-Since,Cache-Control,Content-Type,Keep-Alive,X-Requested-With,Authorization
Access-Control -Allow-Methods:GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
授权:apikey ="apikey1"AuthenticationToken ="62364GJHGJHG"
连接:keep-alive
内容-Length:240
Content-Type:application/json; charset = utf-8
X-Powered-By:Express
这是成功的功能
params.success = function (response, textStatus, jqXHR) {
console.log(jqXHR.getAllResponseHeaders())
}
Run Code Online (Sandbox Code Playgroud)
这就是它记录的
内容...... Content-Type:application/json; 字符集= utf-8的
javascript ×6
jquery ×2
angularjs ×1
backbone.js ×1
bdd ×1
cors ×1
dom ×1
ecmascript-6 ×1
express ×1
git ×1
jasmine ×1
promise ×1
protractor ×1
tdd ×1
touch ×1