Liquid、JavaScriptなどに関する質問
埋め込みスクリプトを <script src="外部アドレス +リクエストパラメータ(変数)"></script> の形で書きページに描写したいです。
セクションの「page.liquid」を複製し、endstyle と schemaの間のhtml部分を以下のようにスクリプト要素を作成し、appendChildで追加する形に書き換えました。
コンソールログでappendChildの直前まですべてうまくいっていることを確認できているのですが、おそらくappendchildだけ正常動作できていないのか、埋め込みスクリプトが表示されません。
srcに追加するリクエストパラメータを変数ではなく固定値にし、scriptタグをそのまま書き込むと正常表示されることを確認しています。
{%- endstyle -%}
<div class="color-{{ section.settings.color_scheme }} gradient">
<div class="page-width page-width--narrow section-{{ section.id }}-padding">
<h2 class="page-title {{ section.settings.heading_size }}">
</h2>
<div class="rte">
<script>
//formで送った情報を取得し、srcアドレスを作成
const currentUrl = new URL(location.href)
const queryString = currentUrl.searchParams
const srcAdr = '外部アドレス' + queryString.get('id')
console.log(srcAdr)
//appendChildで要素を追加
var sc = document.createElement('script')
sc.src=srcAdr; //
console.log(sc)
var rte = document.querySelector('.rte')
console.log(rte)
rte.appendChild(sc)
</script>
</div>
</div>
</div>
{% schema %}
@ななし 様
掲載いただいているコードを試してみました。
'外部アドレス' が誤ってさえいなければ、うまく動作するように見受けられました。
Console.logをお使いになっているということは、Developer Toolsのコンソールをご覧になっていると思うのですが、コンソールに他にはエラーは表示されていないでしょうか?
(キュー田辺)
ご回答ありがとうございます。
コンソールを確認すると以下のようなエラーを見つけました。
「It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.」
エラー文で検索してみると、非同期で読み込まれる外部スクリプトからは、document.write()を実行できない。とのことでした。
この問題はiframeまたreactを利用することで解決できるようです。
ただ質問後、要件が変わり、問題の解決は不要になりました。
必要要件が終わりましたら、時間を見て再度検討しようと考えています。
いつもShopifyをご利用いただき、ありがとうございます。 Shopifyは、皆様の日本語での利用体験の向上に努めております。さらなる改善のために皆様のご意見をお寄せい...
By JasonH May 9, 2025Shopify アカデミーの学習パスと認定スキルバッジExpanding Your Shopify Business Internationallyを活用して、国際的にビジネ...
By Shopify Feb 7, 2025Shopify アカデミーの学習パスB2B on Shopify:立ち上げとカスタマイズで卸売販売に進出しましょう。これら3つの無料コースは、ShopifyストアでB2B機能...
By Shopify Jan 31, 2025