2011-11-02 39 views
4

我想知道的是,当用户点击我网站上的链接(内部链接 - 而不是其他网站)时,如果他们只是点击了它或按住Ctrl单击它(或右键单击 - 在新标签页中打开)。我可以知道当人们在新标签中打开我的网站上的链接吗?

我使用PHP。

例如: 人在页面1上,并点击链接为page2。 当他们在页面2我想知道他们来自哪里(_server ['http_referer']给了我,但我也想知道他们是否在新窗口/选项卡中打开页面。我需要知道这一点,因为页面上的历史回退按钮。

这样做的原因是要知道网站的浏览历史记录 - 我创建会话以跟踪浏览历史记录(以便我可以在任何给定时间返回一页,返回两页或返回三页),但是我不希望会话在选项卡之间发生冲突,以便每个选项卡都有自己的浏览历史记录。这就是为什么我需要为每个打开的选项卡创建新的会话。


我发现作为一个可能的解决我的问题是使用类似的JavaScript这样:

<script> 
var history_status = history.length; 
var referrer_site = document.referrer; 

if(history_status > 1 && referrer_site != "") { 
    alert(referrer_site); 
} else { 
    alert('No referrer site'); 
} 
</script> 

我需要改变一点点,但是这是我第一次演示,以检查如果它的工作原理(和它一样)

我首先需要查找浏览器用户使用,因为history_status第一页的历史赋予0,当你使用IE浏览器,但1,如果你使用的是Firefox或Chrome。

+1

您可以使用javascript'onready'和'history'对象来检查是否有任何历史记录。如果是这样,用户只需点击链接,就可以显示/隐藏您使用PHP创建的历史元素。 – Wulf

+0

浏览器已经拥有内置的“返回X页面”功能(通常通过按下后退按钮来触发)。你为什么试图重新发明轮子? – Quentin

+0

@Quentin你不明白我想要做什么。用户不应该决定他回去的页数。 – birgir

回答

1

这听起来不错,用户体验不错。后退按钮并允许用户打开新标签是用户期望以某种方式表现的。我个人会觉得很沮丧。如果他们无法为该选项卡创建自己独特的浏览记录,那么新选项卡中的关键点是什么?

如果你真的想这样做。使用数字创建一个cookie,在每个页面上加载碰撞数字,并将该页面URL存储在数据库中用于该会话。在页面加载时,引入thr历史并通过JavaScript将其加载到浏览器历史记录中。 Eeek。

+0

感谢您的答案,但我想我没有用足够的细节描述我的问题。 我也发现了一些方法,我可以用JavaScript来破解我的系统。 原因是因为我填写了表单,然后表单会出现另一个表单,但是当您保存时我想将您带回两个网站,这就是为什么我将会保存引用网站的会话。 – birgir

相关问题