使用 javascript 检查 URL 是不是包含值

Posted

技术标签:

【中文标题】使用 javascript 检查 URL 是不是包含值【英文标题】:Checking if a URL contains a value with javascript使用 javascript 检查 URL 是否包含值 【发布时间】:2014-06-17 23:05:35 【问题描述】:

我正在为我的网站开发一项功能,该功能允许用户使用后退按钮而不必加载更多数据库结果。

我首先加载 16 个结果,然后有一个加载更多按钮来加载下一个 16。在 ajax 成功中,我更改了此按钮的 href,因此 url 更改为例如domain.com/#1 到 #2。

这是我昨晚写的:

// First get the page URL and split it via # signs
var parts = location.href.split('#');

// now we run a check on the URL and see how many 'parts' there are
if(parts.length > 1)

  var params = parts[0].split('?');
  var mark = '?';
  if(params.length > 1)
  
    mark = '&';
  
  location.href = parts[0] + mark + 'page=' + parts[1];

获取 URL,并将用户重定向到同一页面,但将片段编号转换为页码。然后我从这里使用 php $_GET 并从中设置限制子句的最后一个值。

这很好用。但它的原始。例如,假设我推回并且 URL 变为:

www.domain.com/?page=1

如果我点击加载更多数据,页面 url 变为:

www.domain.com/?page=1#2

如果用户随后访问另一个页面并返回,那么他们将被定向到:

www.domain.com/?page=1&page=1

解决这个问题的最佳方法是什么?我正在考虑在查找片段的同时对 URL 进行检查,如果 URL 有页面变量,我然后将该变量添加到片段变量中,页面 URL 变为 ?page=THE SUM NUMBER

对修改上面发布的 sn-p 以检查 URL 的页面值然后在重定向之前将两者相加有任何帮助吗?

谢谢!

【问题讨论】:

【参考方案1】:

您需要使用location.search 来获取URL 上的查询字符串:

var queryParameters = location.search.split('&');

然后你可以循环查询参数并检查是否设置了page

var pageNumber = 0;
for(var i = 0; i < queryParameters.length; i++)

    var keyvaluePair = queryParameters[i].split('=');
    if(keyvaluePair[0] == 'page')
    
        pageNumber = keyvaluePair[1];
        break;
    

请参阅 MDN 上的文档:https://developer.mozilla.org/en-US/docs/Web/API/Window.location 您可能还会发现此示例对于返回一个值很有用:https://developer.mozilla.org/en-US/docs/Web/API/Window.location#Example_.236.3A_Get_the_value_of_a_single_window.location.search_key.3A

如果要获取#之后的信息,需要使用location.hash。我链接的 MDN 文档也有关于 location.hash 的信息。

【讨论】:

以上是关于使用 javascript 检查 URL 是不是包含值的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript 检查 url 内容类型

如何检查本地 JavaScript 包是不是为 Semver?

检查当前 URL 是不是包含哈希 [重复]

如何检查url查询字符串是不是等于javascript(或jquery)[重复]

Javascript Regex 检查 URL 是不是包含一个单词并且不包含另一个单词

如何检查获取的响应是不是是javascript中的json对象