回答編集履歴

2

内容を修正

2021/10/25 08:15

投稿

fj68
fj68

スコア752

test CHANGED
@@ -82,11 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- 正直こういったDOM操作を自前で用意するとなると、ちょっとめんどくさい上にメンテナンスしにくいです。
86
-
87
- 可能であれば、ReactやVue、Svelteといったビューライブラリの採用を検討されるとよいかと存じます。
88
-
89
- とはいえ、その場合スクリプトを動的に読み込む際の注意点(読み込だスクリプト変数のスプや実行タミングど)は抑えておく必要があります。
85
+ クライアントサイドでスクリプトを動的に読み込む方法を書いておいて何なですが、他方も回答されているように今回ケーではサバーサドでHTMLを動的に生成する方法がよいのではいかと思います。
90
86
 
91
87
 
92
88
 

1

内容を修正・追記

2021/10/25 08:15

投稿

fj68
fj68

スコア752

test CHANGED
@@ -1,3 +1,15 @@
1
+ 【追記】
2
+
3
+ `<noscript>`について、「`<noscript>`はJavaScriptが無効な環境で表示されるので、`img`を追加するのは無意味ではないか」とご指摘をいただきました。
4
+
5
+ そのとおりです。コードと説明を修正しました。
6
+
7
+
8
+
9
+ ---
10
+
11
+
12
+
1
13
  `<script src="'https://example.com/1/?code='+ hoge" id="aaa"></script>`はHTMLであり、`"'https://example.com/1/?code='+ hoge"`もまたHTMLの一部分です。JavaScriptとして実行されるわけではありません。
2
14
 
3
15
 
@@ -14,13 +26,11 @@
14
26
 
15
27
 
16
28
 
17
- 同様に、`img`も動的追加ます
29
+ `img`タグついては`<noscript></noscript>`内の要素をJavaScriptでは操作できないので(JavaScriptが無効の環境向けですからね……)、サーバーサイドでHTMLを生成するなどの方法をとりまょう
18
30
 
19
31
 
20
32
 
21
33
  ```html
22
-
23
- <noscript></noscript>
24
34
 
25
35
  <script>
26
36
 
@@ -44,26 +54,6 @@
44
54
 
45
55
 
46
56
 
47
- // img要素を作る関数
48
-
49
- function createImg(src) {
50
-
51
- var script = document.createElement("img"); // script要素を作る
52
-
53
- script.width = "1";
54
-
55
- script.height = "1";
56
-
57
- script.alt = "";
58
-
59
- script.src = src;
60
-
61
- return script;
62
-
63
- }
64
-
65
-
66
-
67
57
  // ドキュメントが完全に読み込まれてから
68
58
 
69
59
  document.addEventListener('load', () => {
@@ -77,18 +67,6 @@
77
67
  var s2 = createScript('https://example.com/2/?code=' + hoge, "aaa");
78
68
 
79
69
  document.body.appendChild(s2);
80
-
81
- // img要素を作ってnoscriptに追加
82
-
83
- var noscript = document.querySelector("noscript");
84
-
85
- if (noscript) {
86
-
87
- var img = createImg('https://example.com/img/aaa/?code='+ hoge);
88
-
89
- noscript.appendChild(img);
90
-
91
- }
92
70
 
93
71
  });
94
72