-
-
Notifications
You must be signed in to change notification settings - Fork 111
Expand file tree
/
Copy pathdom-splicer.js
More file actions
90 lines (77 loc) · 1.88 KB
/
Copy pathdom-splicer.js
File metadata and controls
90 lines (77 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
var splicer = new DOMSplicer({
target: document.documentElement
});
var a = document.createTextNode('a');
var b = document.createTextNode('b');
var c = document.createTextNode('c');
var d = document.createTextNode('d');
var e = document.createTextNode('e');
var f = document.createTextNode('f');
var g = document.createTextNode('g');
var h = document.createTextNode('h');
var i = document.createTextNode('i');
console.time();
splicer.splice(0, 0, a, b, c, d, e);
console.timeEnd();
verify(splicer);
console.time();
splicer.splice(2, 1, g);
console.timeEnd();
verify(splicer);
splicer = new DOMSplicer({
target: document.createElement('div'),
childNodes: []
});
console.time();
splicer.splice(0, 0, a, b, c, d, e);
console.timeEnd();
verify(splicer);
console.time();
splicer.splice(2, 1, g);
console.timeEnd();
verify(splicer);
console.time();
splicer.splice();
console.timeEnd();
verify(splicer);
console.time();
splicer.splice(1, 1);
console.timeEnd();
verify(splicer);
console.time();
splicer.splice(10);
console.timeEnd();
verify(splicer);
console.time();
splicer.splice(-1);
console.timeEnd();
verify(splicer);
const fragment = document.createDocumentFragment();
fragment.appendChild(document.createComment('placeholder'));
splicer = new DOMSplicer({
before: fragment.childNodes[0]
});
splicer.splice(0, 0, a, b, c, d, e);
splicer = new DOMSplicer({
target: fragment,
childNodes: {length: 0}
});
splicer.splice(0, 100);
function verify(splicer) {
console.assert(
[].slice.call(splicer.childNodes).every(
function (node, i) {
return splicer.target.childNodes[i] === node;
}
),
'splicer.childNodes same as splicer.target.childNodes'
);
console.assert(
[].slice.call(splicer.target.childNodes).every(
function (node, i) {
return splicer.childNodes[i] === node;
}
),
'splicer.target.childNodes same as splicer.childNodes'
);
}