javascript错误-找不到脚本
Index.htmljavascript错误-找不到脚本,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 + '"/>');
<!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>