@@ -67,10 +67,6 @@ open class ElementCreator<out PARENT_TYPE : Element>(
67
67
68
68
val id: String = mutAttributes.computeIfAbsent(" id" ) { JsonPrimitive (" K" + browser.generateId()) }.content
69
69
val htmlDoc = browser.htmlDocument.get()
70
- val createElementStatement = when (namespace) {
71
- null -> " document.createElement(tag);"
72
- else -> " document.createElementNS(\" ${namespace} \" , tag);"
73
- }
74
70
when {
75
71
htmlDoc != null -> {
76
72
val parentElement = when (element) {
@@ -92,14 +88,16 @@ open class ElementCreator<out PARENT_TYPE : Element>(
92
88
}
93
89
94
90
element.browser.isCatchingOutbound() != null -> {
91
+
95
92
// language=JavaScript
96
93
val createElementJs = """
97
94
let tag = {};
98
95
let attributes = {};
99
96
let myId = {};
100
97
let parentId = {};
101
98
let insertBefore = {};
102
- let newEl = $createElementStatement
99
+ let namespace = {};
100
+ let newEl = namespace ? document.createElementNS(namespace, tag) : document.createElement(tag);
103
101
newEl.setAttribute("id", myId);
104
102
for (const key in attributes) {
105
103
if ( key !== "id") {
@@ -114,10 +112,11 @@ if (insertBefore !== undefined) {
114
112
} else {
115
113
parentElement.appendChild(newEl);
116
114
}
117
- """
115
+ """
116
+
118
117
browser.callJsFunction(
119
- createElementJs, JsonPrimitive (tag), JsonObject (mutAttributes), id.json ,
120
- JsonPrimitive (element.id), JsonPrimitive (insertBefore ? : " " ), JsonPrimitive (elementsCreatedCount)
118
+ createElementJs, JsonPrimitive (tag), JsonObject (mutAttributes), JsonPrimitive (id) ,
119
+ JsonPrimitive (element.id), JsonPrimitive (insertBefore ? : " " ), JsonPrimitive (elementsCreatedCount), JsonPrimitive (namespace ? : " " )
121
120
)
122
121
}
123
122
@@ -130,12 +129,13 @@ let attributes = {};
130
129
let myId = {};
131
130
let parentId = {};
132
131
let insertBefore = {};
133
- let newEl = document.createElement(tag);
134
- if (attributes["id"] === undefined) {
132
+ let namespace = {};
133
+ let newEl = namespace ? document.createElementNS(namespace, tag) : document.createElement(tag);
134
+ if (!attributes["id"]) {
135
135
newEl.setAttribute("id", myId);
136
136
}
137
137
for (const key in attributes) {
138
- newEl.setAttribute(key, attributes[key]);
138
+ newEl.setAttribute(key, attributes[key]);
139
139
}
140
140
let parentElement = document.getElementById(parentId);
141
141
let startNode = document.getElementById(insertBefore)
@@ -145,10 +145,10 @@ if (insertBefore !== undefined) {
145
145
} else {
146
146
parentElement.appendChild(newEl);
147
147
}
148
- """
148
+ """
149
149
element.browser.callJsFunction(
150
150
createElementJs, tag.json, JsonObject (mutAttributes), id.json,
151
- element.id.json, JsonPrimitive (insertBefore ? : " " ), JsonPrimitive (elementsCreatedCount)
151
+ element.id.json, JsonPrimitive (insertBefore ? : " " ), JsonPrimitive (elementsCreatedCount), JsonPrimitive (namespace ? : " " )
152
152
)
153
153
}
154
154
}
0 commit comments