1 | // from https://stackoverflow.com/questions/1197575/can-scripts-be-inserted-with-innerhtml |
2 | // fixes <script> tags in inserted HTML (e.g. via innerHTML) |
3 | // TODO: Do we handle <script src=""> correctly? |
4 | |
5 | sS js_nodeScriptReplace() {
|
6 | ret [[ |
7 | function nodeScriptReplace(node) {
|
8 | if (nodeScriptIs(node)) {
|
9 | node.parentNode.replaceChild(nodeScriptClone(node), node); |
10 | console.log("nodeScriptReplace finished replacement");
|
11 | } else {
|
12 | var i = -1, children = node.childNodes; |
13 | while (++i < children.length) |
14 | nodeScriptReplace(children[i]); |
15 | } |
16 | |
17 | return node; |
18 | } |
19 | |
20 | function nodeScriptClone(node){
|
21 | var script = document.createElement("script");
|
22 | if (node.src) |
23 | console.log("nodeScriptReplace including " + node.src);
|
24 | else {
|
25 | console.log("nodeScriptReplace inline script");
|
26 | script.text = node.innerHTML; |
27 | } |
28 | |
29 | var i = -1, attrs = node.attributes, attr; |
30 | while ( ++i < attrs.length ) |
31 | script.setAttribute( (attr = attrs[i]).name, attr.value ); |
32 | return script; |
33 | } |
34 | |
35 | function nodeScriptIs(node) {
|
36 | return node.tagName === 'SCRIPT'; |
37 | } |
38 | ]]; |
39 | } |
Began life as a copy of #1032354
download show line numbers debug dex old transpilations
Travelled to 3 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1032645 |
| Snippet name: | js_nodeScriptReplace (backup) |
| Eternal ID of this version: | #1032645/1 |
| Text MD5: | 1a321aaf92e9be7b29b1f67315c5d8d4 |
| Author: | stefan |
| Category: | javax / javascript |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-09-30 02:45:12 |
| Source code size: | 1224 bytes / 39 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 321 / 336 |
| Referenced in: | [show references] |