用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() == "" || 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()但不是模态,且可以改变窗体大小,即有最大最下化按钮,大家有没有没有办法去掉这两个按钮。
用window.showModalDialog()打开的页面Request.UrlReferrer为null的更多相关文章
- 用window.showModelDialog() 打开的页面的返回值
有两个页面也个 Default1.aspx 另外一个是 Default2.aspx Default1.aspx 有个按钮是用来打开Default2.aspx页面的 按钮的js代码是 var win ...
- window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;
页面1 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 解决以showModalDialog打开的页面在提交表单时弹出新窗口的问题
源代码如下: 父页面: window.showModalDialog("../readfile/readFile.jsp","","dialogWid ...
- 关闭浏览器或者关闭使用window.open打开的页面时添加监听事件
最近工作中有个需求:点击按钮时打开一个页面,此处取名为page1,打开页面的前提条件是如果有人已经打开过page1页面并且没有关闭时请求ajax判断session是否为空,如果为空则将用户名和文档id ...
- MVC Request.UrlReferrer为null
使用情景,登录后返回登录前访问的页面. 这个时候用到了UrlReferrer var returnUrl = HttpContext.Current.Request.UrlReferrer != nu ...
- js关闭 window.open 打开的页面
1.关闭 当前页面 window.opener = null; window.open('', '_self', ''); window.close(); 但是在FF中就是不行: 2.项目中情况是通过 ...
- js window.open()打开的页面关闭后刷新父页面
function test(){ var winObj = window.open(URL); var loop = setInterval(function(){ if(winObj.closed) ...
- window.showModalDialog 子窗口和父窗口不兼容最新的谷歌
最新版的谷歌不支持window.showModalDialog的写法,会出现,找不到方法的问题,同时返回值的方法window.dialogArguments;也用不了. 这里就只能用最原版的windo ...
- window.showModalDialog()复制内容
ShowModalDialog 打开的 页面上加入个 <span id="mySpan" name="mySpan" contentEditable=&q ...
随机推荐
- Java NIO 学习笔记 读写结合补充
小练习:nio读写文件,将fileread中的内容读取到filewrite中 try { //创建输入通道 FileInputStream fis = new FileInputStream(&quo ...
- 2018.04.03 ABAP OLE操作整理
OLE整理: 1.定义,分别对应EXCEL,workbook(工作簿),sheet(页),单元格 DATA: EXCEL_OBJ TYPE OLE2_OBJECT, BOOK_OBJ TYPE OLE ...
- mudos源码分析
错误捕捉相关的代码在simulate.c void throw_error() { )->framekind & FRAME_MASK) == FRAME_CATCH) { LONGJM ...
- Ubuntu14.04中stopping log initial device creation错误或自动挂载错误失败(导致系统无法自动启动)
出现问题的原因: 图一 出现问题的界面: 图二 按esc,无作用. 图三 按esc,按i,依然无作用. 图四 解决方法: (1)按esc,i无用, 在图2按s成功到登陆界面. (2)桌面修改为dis ...
- Windows安装zabbix-agent4.0
1.在Windows系统中的C盘,新建一个zabbix目录C:/zabbix2.先下载zabbix-agent的安装包https://assets.zabbix.com/downloads/4.0.1 ...
- 用Python给你的代码上个进度条吧 | 【代码也要面子的】
微信公众号:AI算法与图像处理如果你觉得对你有帮助,欢迎关注.转发以及点赞哦-( ̄▽ ̄-)~ 前言 最近在跑一些代码的时候,很烦...因为有时候不知道这段程序什么时候能执行完,现在执行哪里了,如果报错 ...
- 什么是sigmoid激活函数?
上面我们讲了引入激活函数的意义,激活函数有多种,下面我们拿一种激活函数sigmoid来做示例,其他的类似.sigmoid函数表达式如下: 它的函数曲线图是: 看到上面的函数曲线图,可以看出是一 ...
- NDK学习笔记-JNI的引用
JNI中的引用意在告知虚拟机何时回收一个JNI变量 JNI引用变量分为局部引用和全局引用 局部引用 局部引用,通过DeletLocalRef手动释放对象 原因 访问一个很大的Java对象,使用之后还用 ...
- Spring Boot CommandLineRunner的使用
1. 说明 程序在启动完成的时候需要去处理某些业务,因此Spring Boot程序中需要去实现CommandLineRunner接口. 2. CommandLineRunner方法执行顺序 程序启动后 ...
- neo4j 将一个节点的属性复制到另一个节点上
在使用Python操作Neo4j数据库的时候,经常会遇到重复的节点,需要将一个节点的属性复制到另一个节点,之后将该节点删除. def copy_node_properties(source_node_ ...