1

我有两页www.abc.com/pg1.aspx,即www.abc.com/pg2.aspx

pg1.aspx
response.redirect("www.abc.com/pg2.aspx");

pg2.aspx
string url_refer = Request.UrlReferrer.ToString();

UrlReferrer工作正常。

pg1.aspx
<a href='#' onclick=\"window.open('www.abc.com/pg2.aspx', 'windowname2', 'width=1014, height=709, screenX=1, left=1, screenY=1, top=1, status=no, menubar=no, resizable=no, toolbar=no'); return false;\">

pg2.aspx
string url_refer = Request.UrlReferrer.ToString();

UrlReferrerNULL

我搜索了解决方案。但他们都没有导致我想要的解决方案。

我的问题是,如果窗口没有菜单栏、状态或工具栏,UrlReferrerNULL

如果没有,UrlReferrer有上一页的 URL。

我也试过url_refer = Request.ServerVariables["HTTP_REFERER"].ToString();代替string url_refer = Request.UrlReferrer.ToString();.

结果是一样的。

有什么解决办法吗?

4

5 回答 5

2

我的解决方案是从“document.referrer”中获取

document.addEventListener('DOMContentLoaded', function () {     
    document.getElementById('hfUrlReferrer').value = document.referrer; 
})
于 2012-10-30T13:00:58.440 回答
2
<a href="javascript:void(0);" onClick="MyWindow=window.open('','gallery','location=no,directories=no,menubar=no,scrollbars=no,width=550,height=550');MyWindow.location.href='yoururl.html;MyWindow.focus(); return false;">

诀窍是使用在 IE 中记录引用者的 location.href。

于 2012-11-08T21:53:58.200 回答
1

在一个论坛上找到了这个很好的解决方法,并稍微调整了它。

将此代码放在页面顶部:

<script language="JavaScript">
function goTo(url){
   var link = document.getElementById("link");
   link.href = url;
   link.click();
}
</script>
<a id="link" target="_blank" href="javascript:void(0)"
  style="visibility:hidden;position:absolute;"></a>

...然后像这样构建您的链接:

<input type="button" value=google onclick="goTo('http://www.google.com')">

您正在做的是创建一个不可见的<a>元素,然后使用 javascript 更改该元素的地址,并以编程方式“单击”它。

于 2015-10-14T02:01:21.473 回答
0

对此没有简单的答案 - 通常,这UrlReferrer是特定于浏览器的行为。例如,Chrome 的处理方式与 Internet Explorer 不同。

如果您自己进行引荐,那么您最好传递一个查询字符串参数或使用会话状态来识别引荐 URL。

于 2011-09-28T09:07:06.870 回答
0

我不确定..但我发现..

如果我们使用 Javascripts 调用新页面,则会话不起作用。

有人告诉我,所有会话值都在使用 javascripts 调用的新页面上重置。

作为我的问题的替代方案,我使用了 QueryString。

我真的不希望用户看到 URL,但我已经用 javascript 隐藏了 URL。

所以,我使用查询字符串没有问题,对吧?

有没有人有更好的解决方案?

于 2011-09-29T03:41:40.590 回答