【追記】
<noscript>
について、「<noscript>
はJavaScriptが無効な環境で表示されるので、img
を追加するのは無意味ではないか」とご指摘をいただきました。
そのとおりです。コードと説明を修正しました。
<script src="'https://example.com/1/?code='+ hoge" id="aaa"></script>
はHTMLであり、"'https://example.com/1/?code='+ hoge"
もまたHTMLの一部分です。JavaScriptとして実行されるわけではありません。
ご質問にある参考文献はVueというライブラリを用いてHTMLを動的に生成しているのでこのようなことができますが、ご質問から察するにgara-pagosuさんはそういったライブラリを使っていないのではないかと思います。
その場合は、以下のようにJavaScriptで動的に<script>
要素を作ってドキュメントに追加すれば読み込むことができます。
スクリプトを動的に読み込む方法 | JavaScript プログラミング解説
img
タグについては<noscript></noscript>
内の要素をJavaScriptでは操作できないので(JavaScriptが無効の環境向けですからね……)、サーバーサイドでHTMLを生成するなどの方法をとりましょう。
html
1<script>
2 var hoge = "abc";
3
4 // script要素を作る関数
5 function createScript(src, klass) {
6 var script = document.createElement("script"); // script要素を作る
7 srcipt.classList.add(klass); // idではなくclassを追加(下記の説明を参照)
8 script.src = src; // srcを設定
9 return script;
10 }
11
12 // ドキュメントが完全に読み込まれてから
13 document.addEventListener('load', () => {
14 // script要素を作ってbodyに追加
15 var s1 = createScript('https://example.com/1/?code=' + hoge, "aaa");
16 document.body.appendChild(s1);
17 var s2 = createScript('https://example.com/2/?code=' + hoge, "aaa");
18 document.body.appendChild(s2);
19 });
20</script>
なお、var hoge = abc;
のabc
は変数名ではなく文字列でしょうから、"abc"
に修正しました。
また、HTMLではid
属性はドキュメント内で一意でなければなりません。言い換えると、ドキュメント内で同じid
は2つの要素につけることができないのです。そのため、id="aaa"
はclass="aaa"
となるよう変更しました。
クライアントサイドでスクリプトを動的に読み込む方法を書いておいて何なんですが、他の方も回答されているように今回のケースではサーバーサイドでHTMLを動的に生成する方法がよいのではないかと思います。
ご参考まで。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/25 08:04
2021/10/25 08:06
2021/10/25 09:19
2021/10/25 10:49 編集
2021/10/25 14:25