我需要在一个URL上运行一个函数,* 不 * 包含子目录-一个 * 只 * 适用于根域,但根域可以有查询字符串。例如,这应匹配:
不应匹配:
(我不能只检查/,因为从技术上讲,它甚至包含在根域的URL中。)我想我可以想象分割URL和所有,但不知道是否有一个更简单的方法说,“如果URL后'.com/'要么不存在或不以?开始“...
/
?
yws3nbqq1#
您可以使用URL类解析URL并提取pathname属性。如果路径名长于"/",则它具有非空路径
"/"
const urls = [ "https://example.com", "https://example.com?utm=blah", "https://example.com/?utm=blah", "https://example.com/index.html?utm=blah", "https://example.com/directory" ]; urls.forEach((url) => { const parsed = new URL(url); const hasPath = parsed.pathname.length > 1; console.log(url, "has path:", hasPath); });
请注意,这会对带有PATH_INFO的URL产生误报,例如https://example.com/index.html/foo/bar/baz,但不清楚您是否需要该级别的支持。
https://example.com/index.html/foo/bar/baz
b1payxdu2#
我觉得你想
window.location.pathname === '/'
如果是https://www.google.com,则为/,但如果是https://www.google.com/search?q=foo,则为/search
https://www.google.com
https://www.google.com/search?q=foo
/search
y1aodyip3#
我相信可以在以下网址找到解决方案:https://stackoverflow.com/a/42353290/1132976基本上,检查window.location.search是否是一个有效的对象,在那篇文章中有关于如何迭代对象中的值的讨论。PS:这可能不会工作在非常老的浏览器。YMMV。
window.location.search
3条答案
按热度按时间yws3nbqq1#
您可以使用URL类解析URL并提取pathname属性。如果路径名长于
"/"
,则它具有非空路径请注意,这会对带有PATH_INFO的URL产生误报,例如
https://example.com/index.html/foo/bar/baz
,但不清楚您是否需要该级别的支持。b1payxdu2#
我觉得你想
如果是
https://www.google.com
,则为/
,但如果是https://www.google.com/search?q=foo
,则为/search
y1aodyip3#
我相信可以在以下网址找到解决方案:https://stackoverflow.com/a/42353290/1132976
基本上,检查
window.location.search
是否是一个有效的对象,在那篇文章中有关于如何迭代对象中的值的讨论。PS:这可能不会工作在非常老的浏览器。YMMV。