如何制作window.open弹出Modal?
我目前正在使用window.showModalDilog打开一个模式弹出窗口,该窗口不允许父窗口执行任何操作。
但在谷歌搜索中,我发现它不是标准方法,各种浏览器已停止支持此function。
事实上我在Opera中遇到了这个问题。 Opera给了我javascript错误并在那时停止执行。 在那次错误之后什么都不会发生。
所以,我只剩下一个选项,那就是window.open。
但我想禁用父窗口(同样在showModalDilog中)。
我尝试下面的代码来做到这一点:
$(window).load(function() { window.opener.document.body.disabled=true; }); $(window).unload(function() { window.opener.document.body.disabled=false; });
但我在这方面失败了。
可以任何人建议我的代码,以便我可以使window.open弹出Modal?
希望我能很好地解释我的问题。 如果您需要更多信息,请询问我。
先感谢您….
更新:
我想在弹出窗口中打开一个Url,然后在打开url后执行某些操作,包括提交表单。
我的代码打开一个弹出窗口:
window.open("https://www.picpixa.com/wp-content/plugins/create-own-object/plugin-google-drive/index.php", "socialPopupWindow", "location=no,width=600,height=600,scrollbars=yes,top=100,left=700,resizable = no");
请帮我….
更新1:
如果我只需点击多个按钮就可以打开一个弹出窗口,这对我也有帮助。 我的意思是如果我点击btn1弹出名为“temp”的应该打开。 但是当我点击btn2然后不再打开一个新的弹出“temp”将重新加载。 如果你能给我这个建议,它也可以帮助我解决80%的问题。
使用ExtJS方法的模态窗口。
在主窗口中
function openModalDialog() { Ext.onReady(function() { Ext.create('Ext.window.Window', { title: 'Hello', height: Ext.getBody().getViewSize().height*0.8, width: Ext.getBody().getViewSize().width*0.8, minWidth:'730', minHeight:'450', layout: 'fit', itemId : 'popUpWin', modal:true, shadow:false, resizable:true, constrainHeader:true, items: [{ xtype: 'box', autoEl: { tag: 'iframe', src: '2.html', frameBorder:'0' } }] }).show(); }); } function closeExtWin(isSubmit) { Ext.ComponentQuery.query('#popUpWin')[0].close(); if (isSubmit) { document.forms[0].userAction.value = "refresh"; document.forms[0].submit(); } }
在popupWindow 2.html中
Save Cancel
你不能制作window.open
模式,我强烈建议你不要这样做。 相反,你可以使用像jQuery UI的对话框小部件 。
更新:
你可以使用load()
方法:
$("#dialog").load("resource.php").dialog({options});
这样它会更快但标记将合并到您的主文档中,因此任何提交都将应用于主窗口。
你可以使用IFRAME:
$("#dialog").append($("").attr("src", "resource.php")).dialog({options});
这比较慢,但会独立提交。
我能够禁用父窗口。 然而,使弹出窗口始终保持提升不起作用。 下面的代码甚至适用于帧标签。 只需将id和class属性添加到帧标记中,它也可以很好地工作。
在父窗口中使用: