如何在Javascript中设置页面的基本href?

时间:2010-08-16 16:00:40

标签: javascript href base

我想根据当前主机名在Javascript中设置页面的基本href属性。我已生成可在不同主机名上查看的HTML页面,这意味着生成基本href标记将在一个主机名中起作用,但在另一个主机名中将不正确。

4 个答案:

答案 0 :(得分:33)

执行此操作的正确方法是根据当前主机名执行标记的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>

答案 1 :(得分:5)

我认为你最好这样做

    <script type="text/javascript">
        document.head.innerHTML = document.head.innerHTML + "<base href='" + document.location.href + "' />";
    </script>

由于location.hostname未返回应用程序上下文根目录!您还可以在控制台document.location上记录console.log,以查看document.location上的所有可用元数据。

答案 2 :(得分:1)

文件撰写( “”);

declare @StartDate datetime, @EndDate datetime
select @StartDate = '2016-08-24 14:44:54.513',@EndDate='2016-08-24 14:48:16.173'
Select convert(varchar,CAST((@EndDate-@StartDate) as time(0))) '[hh:mm:ss]'

答案 3 :(得分:0)

我不同意最佳答案。 “不正确”解决方案错误的唯一原因是该协议无法解决该问题,因此它将失败。

以下是我必须考虑的协议/主机/端口的有效解决方案

    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-base

https://github.com/codymikol/dynamic-base