Javascript $window.location.origin在使用IE时给出了错误的值

Javascript $window.location.origin在使用IE时给出了错误的值,javascript,internet-explorer,Javascript,Internet Explorer,$window.location.origin在IE上返回错误的值 origin属性返回URL的协议、主机名和端口号 范例 网址: 铬合金: $window.location.origin返回 即: $window.location.origin返回 如何在IE上获得正确的值?问题(通常)是IE没有window.location.origin 相反,请尝试使用以下方法: var root = window.location.protocol + "//" + window.location.ho

$window.location.origin
在IE上返回错误的值

origin属性返回URL的协议、主机名和端口号

范例

网址:

铬合金
$window.location.origin
返回

即:
$window.location.origin
返回

如何在IE上获得正确的值?

问题(通常)是IE没有
window.location.origin

相反,请尝试使用以下方法:

var root = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
或者,您可以在javascript的顶部添加此代码,这样您就不必为此费心了

if (!window.location.origin) {
  window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}

您可能还需要端口号。如果是这样,你可以用这个


此polyfill已经是的一部分。

您使用的是同一个浏览器吗?没错,这是一个浏览器问题。更新了这个问题。我不知道它在所有浏览器之间的区别,但是我会考虑写一些东西,把URL解析成各个组件的一致性。这可能会有所帮助:值得补充的是,
$window
window
相同,但由Angular提供。这可能是一个更好的答案。使用
window.location.hostname
而不是主机名和端口有什么缺点吗?根据alt语法,它应该在最后一行代码中使用模板字符串来包含这两个部分:
+(window.location.port?`:${window.location.port}`:''''](除了单波浪号,而不是双波浪号,不知道如何在注释中这样做)使用
window.location.hostname
而不是
hostname
port
是否有任何缺点?根据@tjrobinson No.的规定,它应该包括两个部分。如果您不介意始终指定端口()
if (!window.location.origin) {
  window.location.origin = window.location.protocol + "//" 
    + window.location.hostname 
    + (window.location.port ? ':' + window.location.port : '');
}