任何人都可以看到以下代码出了什么问题,这是在带有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'的字符串,而不是一个正确的空值?
答案 0 :(得分:1)
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'不是协议)。