location.origin值得在file:protocol时测试null

时间:2016-09-22 21:22:20

标签: javascript

任何人都可以看到以下代码出了什么问题,这是在带有file:/// protocol的URL上运行的:

var origin = location.origin;
if (origin) {
    console.log("origin NOT null");
} else {
    console.log("origin is null");
    origin = "";
}
console.log(origin);  // returns null
console.log(typeof origin);  // returns string

我很困惑,似乎我得到了一个名为'null'的字符串,而不是一个正确的空值?

2 个答案:

答案 0 :(得分:1)

enter image description here

location.origin返回字符串而不是null,这就是你得到的第一个if语句而不是第二个。我认为你应该做的是取而代之的是主机名。其中location.hostname为file:///返回null location hostname

答案 1 :(得分:1)

根据HTML5

  

如果scheme是“file”,则用户代理可以返回特定于UA的值。

Chrome返回greenei

Firefox返回"file://"

您的代码唯一的问题是它似乎无法满足您的需求,遗憾的是您没有说出您的需求。

如果您对协议(方案)是"null"感兴趣,请使用file:

(URL的第一部分称为 scheme ,因为'file'不是协议)。