Base标签小记:更改当前页面的地址

一般来说,H5游戏的部署,index.html和代码资源都会放在同一个地址下然后使用iFrame导入到需要加载游戏的页面即可。

但是今天游戏项目部署遇到了一个问题,游戏自己的访问页面(index.html)的地址(a.com)和游戏代码资源的地址(b.com)不在一个地方,这就导致在index中加载了游戏代码后,游戏代码中引用的所有相对路径的资源都报404,(比如实际地址是b.com/res/1.png,但是由于加载到index中,使用a.com的路径,所以请求地址变成了a.com/res/1.png,当然会404了。)

解决方法就是修改当前页面的默认地址,即Base标签。

地址不变时

游戏资源地址不会变化时可以这么写:

<html>
<head>
<base href="http://www.b.com/res/" />
</head>
<body>
</body>
</html>

此时,当前页面下的所有相对路径都相对于b.com/res/这个路径来寻找。

地址会变动时

地址会变动时,可以采用js动态添加base标签或动态修改base标签来改变默认地址,如下:

1 var basePath = ""; // 各种方式获取要更改的默认路径
2 
3 var base = document.createElement("base");
4 base.setAttribute("href", basePath);
5 document.getElementsByTagName('head')[0].appendChild(base);

效果一致。

注意事项

默认地址一旦改变,就会影响当前页面上的所有相对路径。

原文地址:https://www.cnblogs.com/hammerc/p/7519717.html