Javascript 在什么情况下,window.location.search将是未定义的?
我们在日志中不一致地看到此错误: 无法读取未定义的属性“substring” 它出现在这行代码中:Javascript 在什么情况下,window.location.search将是未定义的?,javascript,window.location,Javascript,Window.location,我们在日志中不一致地看到此错误: 无法读取未定义的属性“substring” 它出现在这行代码中:var sPageURL=window.location.search.substring(1) 不幸的是,错误并未持续再现,但流程是: 通过JavaScript打开新窗口 在新窗口中,调用这行代码 基于谷歌搜索、内部测试和类似的回答,它看起来像是window.location.search应该是一个空字符串,但决不能是未定义的。如果未定义窗口或位置,则错误的显示方式可能会有所不同 在什么情况下
var sPageURL=window.location.search.substring(1)
不幸的是,错误并未持续再现,但流程是:
window.location.search
应该是一个空字符串,但决不能是未定义的。如果未定义窗口
或位置
,则错误的显示方式可能会有所不同
在什么情况下可以不定义window.location.search
?所有浏览器(以及所有通常怀疑的浏览器)都应该实现此属性的。这些国家:
搜索属性的getter必须运行以下步骤:
SecurityError
,或者是一个空字符串。如果您没有看到这一点,那么这是一个有缺陷的浏览器,或者是一个没有正确实现此规范的浏览器(可能是一个网络爬虫)
无论哪种方式,您都可以遵守w3c指南我想说这不是你的问题。您的工作是编写符合w3c规范的代码,而浏览器的工作就是遵守这些规范。如果他们不这样做,所有的赌注都输光了。很多东西都可能破裂
你确实声明: 它发生在铬上 但我怀疑这是否正确。实际上很难识别浏览器,欺骗浏览器
用户代理也很简单。
您是否检查了用户的浏览器?它可能是API不正确的浏览器implemented@Axnyff谢谢你的回复。这种情况发生在chrome上,但不幸的是,这种情况并非始终如一。例如,你的网站可能被某个使用jsdom的机器人刮走了。或者像PhantomJS这样的其他浏览器。基本上,任何不实现window.location.search
的浏览器/库。我认为jsdom
是最有可能的一个。它发生在chrome上,你怎么知道的?这听起来像是meRight的机器人,你无法通过报告的用户代理来辨别真正的浏览器。你必须测试它的功能和指纹,即使这样你也会被愚弄:)