Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模式窗口内的Url重定向_Javascript_Jsp_Redirect_Modal Dialog - Fatal编程技术网

Javascript 模式窗口内的Url重定向

Javascript 模式窗口内的Url重定向,javascript,jsp,redirect,modal-dialog,Javascript,Jsp,Redirect,Modal Dialog,我的webapp可以“自行”运行,也可以由另一个webapp在模式窗口中打开 当用户关闭窗口时,我必须清理一些数据,以便捕获关闭窗口的事件,并重定向到如下特定操作: <script language="JavaScript"> window.onbeforeunload = function() { if ((window.event.clientX < 0) || (window.event.clientY < 0) ||

我的webapp可以“自行”运行,也可以由另一个webapp在模式窗口中打开

当用户关闭窗口时,我必须清理一些数据,以便捕获关闭窗口的事件,并重定向到如下特定操作:

    <script language="JavaScript">
        window.onbeforeunload = function() {
            if ((window.event.clientX < 0) || (window.event.clientY < 0) || (window.event.clientX < -80) || window.event.altKey == true) { // close button or ALT+F4
                window.location.assign('<%=request.getContextPath()%>/borraSemaforo.do');
            }
        };
    </script>

window.onbeforeunload=函数(){
如果((window.event.clientX<0)| |(window.event.clientY<0)| | |(window.event.clientX<-80)| | window.event.altKey==true){//关闭按钮或ALT+F4
window.location.assign('/borraSemaforo.do');
}
};
当webapp在非模式窗口中运行,而不是在模式窗口中运行时,这一点就起作用了

我无法控制在模式窗口中打开我的应用程序,因此我无法更改窗口的打开方式


有什么想法吗?

对于在模式窗口中加载应用程序的情况:

一种方法是:

可以在onbeforeunload事件处理程序的窗口中创建隐藏的iframe。 在iframe中放置操作的url

另一方面—

创建一个指向url路径的小模式窗口。在url路径的响应中,发送一个小javascript来关闭模式窗口

打开iframe的代码-basic js

    var i = document.createElement('iframe');
            i.style.display = "none";
            var d = new Date();
            i.id = d.getTime();
    i.onload = function(){
/*Task complete*/
 alert('frame loaded')}
            i.name = "exp" + d.getTime();
            i.src = window.location.protocol + "//" + window.location.host + '<path>';
            document.body.appendChild(i);
var i=document.createElement('iframe');
i、 style.display=“无”;
var d=新日期();
i、 id=d.getTime();
i、 onload=函数(){
/*任务完成*/
警报('已加载帧')}
i、 name=“exp”+d.getTime();
i、 src=window.location.protocol+“/”+window.location.host+”;
文件.正文.附件(一);

但当应用程序运行非模态时会发生什么?那么有两个窍门。。。。1.从url查询参数传递引用,或通过应用程序当前在模式窗口2中运行的cookie传递引用。对应用程序的非模式启动也做同样的事情。好的,你能用iframe的第一个技巧写一段代码吗?我似乎不知道如何做到这一点…另一个技巧-如果你能控制打开模式窗口的页面,那么你也可以在那里执行你的代码。太棒了!!谢谢你救了我一天:D