javascript错误-找不到脚本

javascript错误-找不到脚本,javascript,jquery,html,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 + '"/>');

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>
输出

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

有没有办法从这个错误中解脱出来?我的意思是在设置base href之前不加载body脚本

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

谢谢。

您可以使用此代码

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

您看到的行为(在某种程度上)是特定于浏览器的,并且与您对
文档的使用有关。编写
可动态设置基本href

Chrome和Firefox在应用document.write之前尝试加载页面资源,然后更新这些URL,并在设置页面后重试。Safari似乎没有这样做;它立即使用插入的基href。我没有测试过其他浏览器

(在所有浏览器中,
标记,无论是静态的还是动态的,都需要出现在文档中依赖它的链接之前。)

除了额外的网络请求之外,这似乎是无害的(见下文),但是您可以通过使用静态
标记而不是动态写入,或者通过在
标记上设置完整路径而不是依赖
来避免它


(re“无害”:我检查了test.js同时存在于根目录和“/Scripts”目录中的情况。动态插入“/Scripts/”base href不会导致两个脚本在Chrome中执行:对两个test.js文件都发出了成功的网络请求,但只有“/Scripts/”中的代码已执行。因此浏览器制造商已经处理了该边缘案例。做得好,浏览器制造商!)

您不能使用javascript动态添加脚本标记,而不是标记吗?“./Scripts/”来自后端。我不能硬编码。
<script src="./scripts/test.js" type="text/javascript"></script>