javascript错误-找不到脚本

时间:2018-08-15 13:40:01

标签: javascript jquery html

Index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>

  <script type="text/javascript">

    var path = '/Scripts/';
    document.write('<base href="' + path + '"/>');

  </script>

</head>
<body>
<h1>WELCOME</h1>

<script src="test.js"></script>

</body>
</html>

test.js

console.log("Message from external script");

输出

error.png

在这里您可以看到,首先它尝试从body标签加载脚本,然后再从脚本部分获取实际的基本href路径。

有什么办法可以解决这个错误?我的意思是在设置基本href之前不要加载正文脚本。

设置基本href后,它便成功执行。

谢谢。

2 个答案:

答案 0 :(得分:1)

您看到的行为(某种程度上)是特定于浏览器的,并且与您使用document.write动态设置基本href有关。

Chrome和Firefox在应用document.write之前尝试加载页面资源,然后更新这些url,并在设置页面<base>之后再次尝试。 Safari似乎不这样做;它立即使用插入的基本href。我尚未测试其他浏览器。

(在所有浏览器中,<base>标签,无论是静态的还是动态的,都需要在依赖于该文档的任何链接之前出现在文档中。)

除了多余的网络请求外,这似乎是无害的(请参阅下文),但是您可以通过使用静态<base>标记而不是动态写入一个标记,或者在{ {1}}标签,而不是依赖<script>

(“无害”:我检查了在根级别和“ / Scripts”目录中都存在test.js的情况。动态插入“ / Scripts /”基本href确实没有 导致两个脚本都在Chrome中执行:成功发送了两个test.js文件的网络请求,但仅执行了“ / Scripts /”中的代码,因此浏览器制造商已经处理了这种情况。制造商!)

答案 1 :(得分:-1)

您可以使用此代码

<script src="./scripts/test.js" type="text/javascript"></script>