我想知道的是,当人们点击我的网站上的链接(内部链接 - 而不是其他网站)时,如果他们只是点击它或按住Ctrl键点击它(或右键单击 - 在新标签页中打开)。 / p>
我使用PHP。
所以例子: 人在第1页上,然后单击第2页的链接。 当他们在第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>
我需要更改一点,但这是我的第一个检查它是否有效的演示(它确实如此)
我首先需要查找浏览器用户正在使用的内容,因为当您使用IE时,history_status为历史记录中的第一页提供0,如果您使用的是Firefox或Chrome,则为1。
答案 0 :(得分:1)
这听起来不像是良好的用户体验。后退按钮和允许人们打开新标签是用户期望以某种方式表现的东西。我个人觉得很沮丧。如果新选项卡无法仅为该选项卡形成自己独特的浏览历史记录,那么它有什么意义呢?
如果你真的真的想这样做。创建一个带有数字的cookie,在每个页面上加载提升数字,并将页面URL存储在数据库中以用于该会话。在页面加载时,拉入thr历史记录并通过JavaScript将其加载到浏览器历史记录中。 Eeek。
答案 1 :(得分:1)
由于该问题确实很老,我将举例说明这个问题,以使其更加清楚。希望我也不会误解所提出的问题。
案例:
-我有一个网站。该网站有一个表格。该表格位于2个(或更多)网页上:表格p001 和表格p002 (... 表格pX )。
-在 p001表格的页面上,有一个按钮,具有指向 p002表格所在页面的链接。
-在表单最后一部分的页面上(以我的情况为 p002 ),有一个提交按钮。单击“提交”按钮会将您重定向到我的网站上的页面,或者单击该按钮将您重定向到页面 p001 上的页面或之前的页面您已加载页面表格p001 。
-想象以下3个 example 案例(显然,为了简短起见,可能存在3个以上的案例)。
- 示例01:我在网站的第X页上。表单上有按钮,我单击此按钮,然后转到表单页面第1部分(表单p001)。我单击按钮 Part-02 进入具有(表单p002)形式的第2部分的页面。完成表单的第二部分后,单击“提交”。这会将我重定向到我的网站上的第X页
- 示例02:浏览了我网站上的多个页面后,我现在位于 Page Y 上。表单上有一个按钮,我右键单击它,然后在新选项卡(选项卡02)中打开表单页面的第1部分(表单p001)。我单击按钮 Part-02 进入具有(表单p002)形式的第2部分的页面。完成表单的第二部分后,单击“提交”。这会将我重定向到我网站上的 Page Y (在标签02中)。
- 示例03:浏览了我网站上的多个页面后,我现在进入了 Page Z 页面。表单上有一个按钮,我右键单击它,然后在新选项卡(选项卡02)中打开表单页面的第1部分(表单p001)。我右键单击按钮 Part-02 ,在新标签页(标签03)内进入具有(Form p002)形式的第2部分的页面。完成表单的第二部分后,单击“提交”。这会将我重定向回我网站上的 Page Z (在标签03中)。
如果该人已加载表单的第一页(p001表单),则将表单页面的链接直接放在浏览器的LOCATION / ADDRESS栏的新标签或窗口中,则我们假定您将被重定向到主页。这与这个问题无关紧要。
回答:
您可以使用 window.localStorage 和 document.referrer
您可以使用window.localStorage存储原始页面,该页面是我进入网站第一页之前的网站位置。测试以下代码。
somePageOnMyWebsite.html (第X,Y或Z页)
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<h1>A Random page on My Website</h1>
<p>My paragraph.</p>
<a type="button" href="formp001.html" target="_blank">Click to form</a>
</body>
</html>
formp001.html
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
var originalPage = document.referrer;
if( originalPage != null)
window.localStorage.setItem("redirectPage", originalPage);
else
window.localStorage.setItem("redirectPage", "");
});
</script>
</head>
<body>
<h1>Form p001</h1>
<form action="formp002.html" target="_self" method="post">
<input type="submit" value="Go to Form p002" />
</form>
</body>
</html>
formp002.html
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
if (window.localStorage.getItem("redirectPage") === null || window.localStorage.getItem("redirectPage") === ""){
// The form was not accessed by clicking on a link on a page on my website, so just redirect to my homepage ...
document.getElementsByTagName("FORM")[0].setAttribute("action", "./hometest.html");
} else{
document.getElementsByTagName("FORM")[0].setAttribute("action", window.localStorage.redirectPage);
}
});
</script>
</head>
<body>
<h1>Form p002</h1>
<form action="#" target="_self" method="post">
<input type="submit" value="Submit" />
</form>
</body>
</html>
hometest.html (我网站的首页)
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<h1>HOME PAGE</h1>
<p>My home</p>
</body>
</html>
我的答案基于birgir对 Luc的答案的评论。