【问题标题】:Loading both inline and external scripts with Helmet使用 Helmet 加载内联和外部脚本
【发布时间】:2020-05-11 16:40:27
【问题描述】:

我有一个内联脚本,它调用在外部脚本中声明的函数。不幸的是,内联脚本在加载外部脚本之前执行,并出现函数未定义错误。

      <Helmet>
        <script
          src="https://code.jquery.com/jquery-3.3.1.min.js"
          integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
          crossorigin="anonymous"
        />
        <script>
          {`
            console.log('Test', typeof $);
          `}
        </script>
      </Helmet>

问题可以在这里看到:

https://codesandbox.io/s/l9qmrwxqzq

如果通过在关闭头盔标记后插入一些字符来刷新页面,它会突然起作用,但在第一次加载时该功能仍未定义。

尝试了多种方法,例如将两者都声明为头盔参数,或者将它们插入单独的头盔标签中,但这些都不起作用。

【问题讨论】:

    标签: reactjs react-helmet


    【解决方案1】:

    我删除了一些有问题的字符。 现在它似乎对我有用:

    <Helmet>
        <script
          src="https://code.jquery.com/jquery-3.3.1.min.js"
          integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
          crossorigin="anonymous"
        >
        </script>
        <script>
            console.log('Test: ', typeof $);          
        </script>
    </Helmet>

    我猜反引号和波浪形括号并没有像你想象的那样做。 (Usage of the backtick character (`) in JavaScript)。

    或者,与其他标签一起工作的“自动关闭标签”可能不适用于“脚本”标签(请参阅Why don't self-closing script elements work?),因此当我使用 end-script 标签手动结束脚本时它会有所帮助。

    (相关?: CDN-script in Helmet does not always load properly )

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2013-08-31
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多