我试图在另一个 HTML 文件中实例化一个 JavaScript 文件中的类,但我不断收到此错误。
这是 JavaScript 文件的代码:
class Puzzle {
constructor(fenStart, pgnEnd) {
this.fenStart = fenStart;
this.pgnEnd = pgnEnd;
}
}
这是 HTML 代码。应该注意的是,我也使用 chessboard.js 和 chess.js 并且所有内容都保存在同一个文件夹中。
<!DOCTYPE html>
<html>
<head>
<title>Chess</title>
<base href="http://chessboardjs.com/" />
<link rel="stylesheet" href="css/chessboard.css" />
</head>
<body>
<script src="js/chess.js"></script>
<div id="board" style="width: 400px"></div>
<p>PGN: <span id="pgn"></span></p>
<script src="js/json3.min.js"></script>
<script src="js/jquery-1.10.1.min.js"></script>
<script src="js/chessboard.js"></script>
<script src="class.js"></script>
<script>
var pgnEl = $('#pgn');
const x = new Puzzle("test", "test");
pgnEl.html(x.fenStart);
</script>
</body>
</html>
导致此错误的原因是什么以及如何修复它?
这可能是由于文件位置不正确造成的,就像@sideroxylon所说,
js/class.js
而不是class.js
。
“HTML
<base>
标签用于指定相对链接的基本 URI 或 URL。” https://www.tutorialspoint.com/html/html_base_tag.htm 这可能是您的文件无法访问的另一个原因。
也可能是由于某些 URL 被阻止。尝试打开开发者控制台(CTRL-SHIFT-I 或 F12)并查找页面上的任何错误。
如果您通过 HTTPS 加载,来自 HTTP 源的任何内容都可能被阻止。这是您的确切代码(使用每个库的在线版本),但将 class.js 文件作为常规脚本标记加载,并包括起始
<body>
标记。
https://jsfiddle.net/ckazwozg/ 正如您应该看到的那样,它运行得很好。
编辑:为了方便起见,这里是来自 JSFiddle 的原始源代码。
<!DOCTYPE html>
<html>
<head>
<title>Chess</title>
<link rel="stylesheet" href="https://rawgit.com/oakmac/chessboardjs/master/src/chessboard.css" />
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chess.js/0.10.2/chess.js"></script>
<div id="board" style="width: 400px"></div>
<p>PGN: <span id="pgn"></span></p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://rawgit.com/oakmac/chessboardjs/master/src/chessboard.js"></script>
<script>
// class.js
class Puzzle {
constructor(fenStart, pgnEnd) {
this.fenStart = fenStart;
this.pgnEnd = pgnEnd;
}
}
</script>
<script>
var pgnEl = $('#pgn');
const x = new Puzzle("test", "test");
pgnEl.html(x.fenStart);
</script>
</body>
</html>