html 未使用链接的script.js

qlckcl4x  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(139)

我正在用stencil.js构建我的第一个Web应用程序,直到现在我的JavaScript代码都在index.html文件中,但现在我想将代码移动到一个单独的文件(script.js)中。
下面是我的index.html文件:

<!DOCTYPE html>
<html dir="ltr" lang="en">
  
<head>
  <meta charset="utf-8">
  <title>Booker App</title>
  <meta name="Description" content="Welcome to the Stencil App Starter. You can use this starter to build entire apps all with web components using Stencil!">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0">
  <meta name="theme-color" content="#16161d">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta http-equiv="x-ua-compatible" content="IE=Edge">

  <script type="module" src="/build/app.esm.js"></script>
  <script nomodule src="/build/app.js"></script>  
  <link href="/build/app.css" rel="stylesheet">
  <link rel="manifest" href="/manifest.json">

  <script src="./script.js"></script>
  
  
</head>
<body>

  <booker-header></booker-header>
  <booker-display></booker-display>
  <booker-buttons name="Add Books"></booker-buttons>
  <booker-form></booker-form>

  <!-- <script>
    var btn = document.querySelector('booker-buttons');
    var form = document.querySelector('booker-form');

    btn.addEventListener('click', function() {
      
      form.open();
      
    })
  </script> -->
  

  
</body>
</html>

下面是我的script.js文件:

var btn = document.querySelector('booker-buttons');
var form = document.querySelector('booker-form');

btn.addEventListener('click', function () {
  console.log('testing if file works');
  form.open();
});

我尝试在</body>之前放置脚本标记,但没有帮助

wwtsj6pe

wwtsj6pe1#

原始答案,仍然相关

通过将脚本移动到外部文件中,它现在可以在加载页面的其余部分之前执行,因为script标记位于原始HTML页面中注解脚本的上方。
尝试将整个脚本 Package 在DOMContentLoaded事件中,以强制它等待所有页面加载完毕。

document.addEventListener('DOMContentLoaded', function () {
  var btn = document.querySelector('booker-buttons');
  var form = document.querySelector('booker-form');

  btn.addEventListener('click', function () {
    console.log('testing if file works');
    form.open();
  });
});

404错误提示
script.js的src属性以./开头,而不是像头文件中加载的其他资源那样以/开头。从技术上讲,这是一个相对引用,只要script.js在目录树中紧挨着HTML文件就可以。
检查你的目录树,确保你有这样的东西,并确保你有script.js在根目录位置,它看起来就在mainfest.json旁边。

- index.html
- script.js
-build
|-app.esm.js
|-app.js

相关问题