我想设置一个网页的基本href属性在Javascript的基础上关闭的当前主机名。我已经生成了可以在不同主机名上查看的HTML页面,这意味着生成一个基本href标记将在一个主机名中工作,但在另一个主机名中将不正确。
doinxwow1#
正确的方法是根据当前主机名对标记执行document.write:
正确:
<script type="text/javascript"> document.write("<base href='http://" + document.location.host + "' />"); </script>
此方法已在IE、FF、Chrome和Safari中生成正确的结果。它产生的(正确)结果与执行以下操作不同:
不正确:
<script type="text/javascript"> var newBase = document.createElement("base"); newBase.setAttribute("href", document.location.hostname); document.getElementsByTagName("head")[0].appendChild(newBase); </script>
46qrfjad2#
我想你最好这样做
<script type="text/javascript"> document.head.innerHTML = document.head.innerHTML + "<base href='" + document.location.href + "' />"; </script>
由于location.hostname不返回应用上下文根!您还可以在控制台console.log上记录document.location,以查看document.location上所有可用的元数据。
location.hostname
console.log
document.location
ulmd4ohb3#
我不同意最高的答案。它不考虑协议,因此将失败。我必须考虑协议/主机/端口的工作解决方案如下
var base = document.createElement('base'); base.href = window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : ''); document.getElementsByTagName('head')[0].appendChild(base);
目前,这在所有主流浏览器(包括IE11)中都能正常工作我已经用这个做了一个npm包,如果有人感兴趣的话,它也支持在这个基href的末尾添加后缀https://www.npmjs.com/package/dynamic-basehttps://github.com/codymikol/dynamic-base
iklwldmw4#
document.write(“”);
<script> document.write("<base href='"+ window.location.protocol +'//' + window.location.host + "' >"); </script>
hof1towb5#
window.document.head.innerHTML=`<base href=${href}>`+window.document.head.innerHTML;
href变量是您要使用的href。
5条答案
按热度按时间doinxwow1#
正确的方法是根据当前主机名对标记执行document.write:
正确:
此方法已在IE、FF、Chrome和Safari中生成正确的结果。它产生的(正确)结果与执行以下操作不同:
不正确:
46qrfjad2#
我想你最好这样做
由于
location.hostname
不返回应用上下文根!您还可以在控制台console.log
上记录document.location
,以查看document.location
上所有可用的元数据。ulmd4ohb3#
我不同意最高的答案。它不考虑协议,因此将失败。
我必须考虑协议/主机/端口的工作解决方案如下
目前,这在所有主流浏览器(包括IE11)中都能正常工作
我已经用这个做了一个npm包,如果有人感兴趣的话,它也支持在这个基href的末尾添加后缀
https://www.npmjs.com/package/dynamic-base
https://github.com/codymikol/dynamic-base
iklwldmw4#
document.write(“”);
hof1towb5#
href变量是您要使用的href。