繁体   English   中英

在html中包含脚本的正确方法是什么

[英]what is the correct way to include a script in html

我目前正在使用Django进行项目,而我的脚本标签存在一个奇怪的问题。 我有一个layout.html文件,其中头部包含Jquery和Bootstrap。 使用jinja,我正在为新文件main.html扩展layout.html。 在我的新文件中,我现在包含一个新脚本,因为该脚本是此页面特有的。

我遇到的问题是,除非我再次在main.html内部包含Jquery,否则此新脚本在main.html中不起作用。 拜托,我想知道对此是否有解释? 还是我想念什么?

layout.html file

<html> 
   <head>
    // script to include jquery here, version 3.3.1
    // other scripts include, bootstrap.js, popper.js, knockout.js
   </head>
   <body>
     { block content % } 

     { % endblock % }
 </body>
</html>

main.html示例

main.html

{ % extends "layout.html" %} {% block content %}

   // This new script below only works if jquery is included here 
   // new script here 

 <div> </div>
{% endblock %}

我还使用了基因敲除(snockout.js),从中我在文档加载时从新脚本中调用函数。 新脚本需要Jquery,但我不明白为什么除非它包含在同一文件中,否则为什么找不到jquery。 当我在main.html文件中包含JS时,我也会得到并报错,因为应该在bootstrap.js之前包含jquery。

拜托,如果有人遇到类似问题或有人可以向我解释这一点,我将非常高兴。

这是layout.html的标题:

<head>
    <title>Suggesto</title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <!-- font awesome-->
    <link
      rel="stylesheet"
      href="https://use.fontawesome.com/releases/v5.7.0/css/all.css"
    />

    <!-- Js-cookie-->
    <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>


    <!--Jquery-->
    <script
      src="https://code.jquery.com/jquery-3.3.1.min.js"
      integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
      crossorigin="anonymous"
    ></script>

    <!-- Popper.js-->
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"
      integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut"
      crossorigin="anonymous"
    ></script>

    <!-- Bootstrap.js-->
    <script src="/static/bootstrap/js/bootstrap.js"></script>

    <!-- Font -->
    <link
      href="https://fonts.googleapis.com/css?family=Noto+Serif+SC|Open+Sans|Quicksand|Montserrat"
      rel="stylesheet"
    />
    <!--Knockout.js-->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

    {% load staticfiles %}

    <link
      rel="stylesheet"
      href="/static/bootstrap/css/bootstrap.css"
      type="text/css"
    />
    <link rel="stylesheet" href="/static/css/mainpage.css" type="text/css" />
  </head>

main.html像这样开始

{%extends "mainpage/layout.html" %} {% block content %}
<script src="/static/js/jquery.session.js"></script>
<link
  rel="stylesheet"
  href="/static/css/star-rating.min.css"
  media="all"
  type="text/css"
/>

<script src="/static/js/star-rating.min.js"></script>

<script src="/static/js/suggest.js"></script>
<link rel="stylesheet" href="/static/css/suggest.css" type="text/css" />
<!-- Start -->
<div class="container" id="Page">

它最终是来自Knockoutjs的一个函数:

ko.cleanNode( )

我不知道此功能在后台有什么作用,需要看一下。 如果您知道更多,请随时提供更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM