【问题标题】:Shopify section does not execute script js code when section is addedShopify 部分在添加部分时不执行脚本 js 代码
【发布时间】:2021-04-13 16:22:45
【问题描述】:

这可能是一个快速的问题,但我找不到答案。我正在尝试构建一个带有<script> 标签的部分。添加并保存该部分后,该脚本工作正常,但我的问题是该部分 js 代码在第一个实例上添加到定制器时未执行。这导致该部分看起来很丑,因为脚本需要运行。有关更多上下文,此部分在该部分中有一个滑块脚本,当该部分添加到定制器中时,该脚本不会执行。只有在保存部分后,滑块才会开始工作。有人遇到过这个问题吗?或者如何解决?我知道我可以将脚本提取到一个 js 文件并从那里运行它并从 html 属性部分获取数据并使用事件shopify:section:load。我想知道是否可以将代码保留在该部分中,这样我只能从一个文件中处理代码。 {% javascript %} 标签也有同样的问题。

为了进一步解释,我在一个部分中有下一个脚本标签

<script>console.log("this is not executed")</script>

如果我在定制器中添加此部分,则不会执行该脚本标记。所以我在控制台日志上没有收到任何消息。

【问题讨论】:

  • 我认为您需要尝试 alert 而不是 console 并且您会看到它有效。
  • 同样的问题,问题是当在定制器中添加新部分时,脚本标签中的任何内容都不会执行。所以我想知道是否有解决方法?否则我将不得不提取代码并添加一个 eventListener 并在该部分的 html 标记中包含信息。
  • 所有代码都添加到内联代码中,并且主题的JS文件很好地执行到定制器中,可能还有其他问题需要您调试和修复。

标签: javascript shopify liquid


【解决方案1】:

使用模式复选框启用或禁用,用户的设置值将存储在settings_data.json

{% if section.settings.script_enabled %}
  <script>
    $(document).ready(function(){
      console.log('{{ section.settings.script_text }}');
    });
  </script>
{% endif %}



{% schema %}
  {
    "name": "section pages",
    "settings": [
      {
        "type": "checkbox",
        "id" : "script_enabled",
        "label" : "enable script",
        "default": true
      },
      {
        "type": "text",
        "id": "script_text",
        "label": "script text",
        "default": "hello from schema"
      }
    ]
  }
{% endschema %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多