URL Referer 在弹出窗口上不起作用
Posted
技术标签:
【中文标题】URL Referer 在弹出窗口上不起作用【英文标题】:URL Referer not working on pop up windows 【发布时间】:2011-11-26 16:38:54 【问题描述】:我有两个页面,即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();
UrlReferrer
是NULL
我搜索了解决方案。但它们都没有导致我想要的解决方案。
我的问题是如果窗口没有菜单栏、状态或工具栏,UrlReferrer
是NULL
如果没有,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')">
您所做的是创建一个不可见的 <a>
元素,然后使用 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 在弹出窗口上不起作用的主要内容,如果未能解决你的问题,请参考以下文章