2011-06-02 27 views
1

目前正在使用某些分页使用ajax的东西。我想要做的是添加像referal = 3到某些链接的结尾,然后当他们去那个链接我会插入一个后退按钮与窗口的位置,例如:if window.location.href里面有'sometext' - 做这个

用户使用ajax分页,进入第3页,我将添加REF = 3的链接或东西的末尾,以便它想这样的:?

http://foo.com/somepage/?ref=3

(不知道这是做这件事的corrent方式)

然后用户点击该链接,我会在该页面上追加一个后退按钮。

所以,当他们使用生成的按钮返回到主页window.location.href将是:

http://foo.com?ref=3

的想法是,当他们单击后退按钮,Ajax的分页将加载到第3页。

我不知道如何解释这个,但有人知道我会怎么去做一个条件语句依赖于window.location.href?

+0

那么一个问题是,有没有什么可以做,以防止有人点击** **真正的“后退”在他们的浏览器按钮... – Pointy 2011-06-02 12:24:37

+0

@Pointy嗯是的,我知道,但是这有什么好用户点击** real **后退按钮。 – daryl 2011-06-02 12:25:14

+0

看来你试图跟踪用户通过你的网站的点击流量,这是否正确? – Stephen 2011-06-02 12:26:34

回答

3

要找到一个如果URL中包含了一些字符串:

if (document.location.href.search("ref=3")!=-1){ 
alert('got ref=3'); 
} 
+0

。索引是比较主流的,不是? – mplungjan 2011-06-02 12:40:00

+0

@mplungjan我想他会有不止一个不同的裁判,所以他可以让正则表达式匹配任何他打算放在那里。如果不是这样,那么是的,'indexOf'会更合适。 – Niklas 2011-06-02 12:41:03

+0

什么是indexOf? – daryl 2011-06-02 12:43:25

0

我不确定我完全理解你想要做什么,但它听起来像你想使用location.hash属性。

使用jQuery插件(如hashchange),您可以添加ajax调用浏览器的历史记录。另外,所有页面都可以收藏。这是一个相当广泛的主题,但我提供的链接应该让你开始。

+0

Nah并不完全符合我的要求,尤其是诉诸插件 - 这对我来说只是一个很大的问题。不管怎么说,还是要谢谢你! – daryl 2011-06-02 12:44:37

1

您可以使用此函数来获取查询字符串的部分:

function getQueryString(variable){ 
    // Grab the query string part of the URL (everything after the ?) 
    var query = window.location.search.substring(1); 

    // If you don't specify which value you want, return the whole thing 
    if(!variable) return query; 

    // Split the query string to key=value pairs into an array 
    var vars = query.split('&'); 

    // Loop through them to find the one we're looking for 
    for (var i = 0; i < vars.length; i++){ 
     // Split key and value 
     var pair = vars[i].split('='); 

     // If the key matches our parameter, return the value 
     if (pair[0] == variable){ 
      return pair[1]; 
     } 
    } 
    // If not found, return empty string 
    return ''; 
} 

然后你就可以得到价值为字符串由:

var value = getQueryString('ref'); 

// Conditional code if it is a certain value, do something 
if(value === '3'){ 
    // Do something 
} 

您还可以通过使用parseInt()把它作为一个数字:

var value = parseInt(getQueryString('ref'), 10); 

if(value === 3){ 
    // Do something 
} 
+0

请注意详细说明这是如何工作的?你明显比jQuery更好lol – daryl 2011-06-02 13:36:02

+0

@tfbox:这是简单的旧javascript。我在代码中添加了一些注释,查看我编辑的答案。您只需传递关键字,然后返回其值。它也可以处理多个URL获取参数,例如'http // example.com/index.php?ref = 3&something = 2'。尽管如此,它并没有对编码做任何事情。测试它,看看它是否有效。 :) – DarthJDG 2011-06-02 14:45:43