URL Referer 在弹出窗口上不起作用

Posted

技术标签:

【中文标题】URL Referer 在弹出窗口上不起作用【英文标题】:URL Referer not working on pop up windows 【发布时间】:2011-11-26 16:38:54 【问题描述】:

我有两个页面,即www.abc.com/pg1.aspxwww.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();

结果是一样的。

有什么办法吗?

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

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

【讨论】:

【参考方案2】:

我发现了这个很好的解决方法on a forum,并稍作调整。

将此代码放在页面顶部:

<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')">

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

【讨论】:

【参考方案3】:
<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;">

诀窍是使用 location.href,它确实在 IE 中记录了引用者。

【讨论】:

您好像少了一个引号:MyWindow.location.href='yoururl.html'; 这对我帮助很大! retun false; 是做什么的?【参考方案4】:

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

document.addEventListener('DOMContentLoaded', function ()      
    document.getElementById('hfUrlReferrer').value = document.referrer; 
)

【讨论】:

【参考方案5】:

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

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

【讨论】:

以上是关于URL Referer 在弹出窗口上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

悬停时弹出窗口在数据表的第二页上不起作用

Jquery日期时间选择器在弹出窗口中不起作用

为啥故事板弹出框在 Swift 中的设备上不起作用?

字体在 IE 浏览器上不起作用

Selenium Python:如何在弹出窗口中向下滚动

javascript--自定义弹出登陆窗口(弹出窗)