-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathdom.js
More file actions
50 lines (48 loc) · 1.58 KB
/
Copy pathdom.js
File metadata and controls
50 lines (48 loc) · 1.58 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
var config = require("./elements.js").config;
var classInfo = require("./configuration.js").classInfo;
var doc = {};
var nativeGetElementById = document.getElementById;
doc.getElementById = function(id) {
var elem = nativeGetElementById.call(this, id);
if (elem) {
return elem;
} else {
var elems = this.getElementsByTagName("*");
for ( var i = 0; i < elems.length; i++) {
var node = elems[i];
if (node.getAttribute("id") === id) {
return node;
}
}
}
return null;
};
var nativeCreateElementNS = document.createElementNS;
doc.createElementNS = function(ns, name) {
var r = nativeCreateElementNS.call(this, ns, name);
if (ns == XML3D.xml3dNS || classInfo[name.toLowerCase()]) {
config.element(r);
}
return r;
};
var nativeCreateElement = document.createElement;
doc.createElement = function(name) {
var r = nativeCreateElement.call(this, name);
if (classInfo[name.toLowerCase()] ) {
config.element(r);
}
return r;
};
//var nativeRegisterElement = document.registerElement;
//doc.registerElement = function(tagName, opt) {
// var r = nativeRegisterElement.call(this, tagName, opt);
// var matches = document.querySelectorAll(tagName);
// // Detach and re-attach all matching web component instances to re-initialize them
// for (var i=0; i < matches.length; i++) {
// var parent = matches[i].parentNode;
// parent.removeChild(matches[i]);
// parent.appendChild(matches[i]);
// }
// return r;
//};
XML3D.extend(window.document, doc);