用window.showModalDialog()打开的页面Request.UrlReferrer为null

今天在解决一个问题,怎么也找不到解决方案。我的一个窗体是IE通过window.showModalDialog()打开的,但为了防止用户手工输的地址,所以我需要判断是通过别的页面调整获得,用Request.UrlReferrer判断,在IE下其值却为null,chrome是正确的,在IE下每次打开页面都提示重新登录,这我就郁闷了,我搜索了很多文档,又说location.herf打开的页面Request.UrlReferrer==null,却很少提window.showModalDialog()打开的页面的来源页面也为null,更别说解决方案了。window.showModalDialog()本身就属于IE特有的方法,而且还存在bug,真让人郁闷至极。

也正是IE支持的方法给了我灵感,既然在其他浏览器(我只测试了chrome)下Request.UrlReferrer是有值的,IE为null,那为什么不利用IE的模态窗体来判断,是否打开的模态窗体呢?

于是我试着去写代码测试一下,代码如下:

  //如果缓存中没有记录或者来源页面为null时,需要重新登录
            if (CookieManage.GetCookieValue() == "0" || Request.UrlReferrer==null)
            {
                //如果使用showModalDialog打开的页面,来源页面页面也为null,则需要判断是否打开的是模态窗体。
                Response.Write("<script type=‘text/javascript‘>if(window.dialogHeight==null){alert(‘用户未登录,请登录‘); location.href=‘/Login.aspx‘;}</script>");
            }

通过对代码的测试,正是我想要的结果。棘手的问题终于解决了。

但本人不确认这种处理方式是否科学,或者有别的更好的方法。不过目前确实解决了我的问题。

也希望我的方法可以给大家灵感找到更好的解决方案。

另:window.showModalDialog()确实存在兼容性问题,但我们项目用的就是这种方法,目前不会变动,不知道大家有没有更好的办法兼容其他浏览器如chrome,目前在chrome中使用window.open()但不是模态,且可以改变窗体大小,即有最大最下化按钮,大家有没有没有办法去掉这两个按钮。

时间: 2024-08-29 06:24:42

用window.showModalDialog()打开的页面Request.UrlReferrer为null的相关文章

js window.open打开新页面

js中window.open打开一个新的页面,其实它的参数有很多. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/ht

用window.showModelDialog() 打开的页面的返回值

有两个页面也个 Default1.aspx   另外一个是 Default2.aspx Default1.aspx 有个按钮是用来打开Default2.aspx页面的 按钮的js代码是 var win = window.showModalDialog("Default2.aspx"); alert(win); Default2.aspx 在页面的onload 事件中加入  window.returnValue = '11111'; 那么当我们关闭 Default2.aspx页面的时候就

ASP.Net 返回上一个页面(Request.UrlReferrer)

Request.UrlReferrer可以获取客户端上次请求的url的有关信息.  这样我们就可以通过这个属性返回到“上一页”,示例如下 1.      首先在Page_load中获得并储存该信息 Page_load(object obj,EventArgs e)             {                     if(!IsPostBack)                    {                         if(Request.UrlReferrer

解决以showModalDialog打开的页面在提交表单时弹出新窗口的问题

源代码如下: 父页面: window.showModalDialog("../readfile/readFile.jsp","","dialogWidth=1000px;dialogHeight=500px;status=no;help=no;resizable:yes"); 子页面:readFile.jsp 1.在head标签内加入<base target="_self">. <!-- 设置base tar

js window.open()打开的页面关闭后刷新父页面

function test(){ var winObj = window.open(URL); var loop = setInterval(function(){ if(winObj.closed){ clearInterval(loop); parent.location.reload(); } },1); }

window.showModalDialog父子窗口参数传递

在开发过程中遇到window.showModalDialog()打开的模态对话框需要从子窗口传递返回值给父窗口中的某个插件,开始想通过window.opener得到,但是试了几次得不到,后来发现原来在当前打开窗口(子窗口)中可以通过window.returnValue=指定返回值;window.close();之后父窗口可以使用var result = window.showModalDialog(url,window,"dialogWidth=600px;dialogHeight=500px;

window.showModalDialog与opener及returnValue

首先来看看 window.showModalDialog 的参数 vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) ; sURL : 打开窗口的地址; vArguments : 传递参数; sFeatures : 窗口属性列表; 第一个参数是必须的, 后两个可以省略. 这里我们要利用的就是第二个参数. 原理是将父窗口的被控制对象以参数的形式传递到子窗口, 在子窗口中直接控制这个对象即可. 举例来说:

Request.UrlReferrer详解

使用前需要进行判断: if (Request != null && Request.UrlReferrer != null && Request.UrlReferrer.PathAndQuery != null)      {            string previousURL = Request.UrlReferrer.PathAndQuery;      } 实例说明: Request.UrlReferrer可以获取客户端上次请求的url的有关信息.这样我们就可

调用window.showModalDialog(),不能调用window.location.reload()和提交表单时打开新窗口的解决方案

我们往往会遇到这种情况,就是用 window.showModalDialog弹出的窗口,在里面提交form表单时,或者location.href=""时,都会新弹出窗口,很恶心的. 注:showModalDialog窗口与window.open打开的窗口刷新本窗口时不同,showModalDialo窗口也不能用F5刷新,也没有右 键操作 建议采用以下方式: A. 在模式窗口页面中加入:      <base target="_self"> //在html