我有一个脚本,我试图打开子窗口并禁用父窗口,并在子窗口关闭后重新启用父窗口,如下所示:
function OpenChild() {
lockOpportunity();
if (ClinicalDataWindow == null || ClinicalDataWindow.closed) {
ClinicalDataWindow = window.open(clinicalDataUrl, 'EditOppClinicalData', GetWindowOptions(1020, 600), true);
var unloadFunc = function () { unlockOpportunity(); };
if (ClinicalDataWindow) {
if (ClinicalDataWindow.addEventListener) {
ClinicalDataWindow.addEventListener('unload', unloadFunc, false);
}
else {
ClinicalDataWindow.attachEvent('onunload', unloadFunc);
}
}
}
else {
ClinicalDataWindow.focus();
}
return false;
}
function lockOpportunity() {
$('#overlay').addClass('locking-overlay');
$('#overlay').height($(".t-edit-form-container").height());
$('#overlay').show();
}
function unlockOpportunity() {
$('#overlay').removeClass('locking-overlay');
$('#overlay').hide();
}
下面是我将转换为叠加层以锁定父级
的div<div id="overlay" style="display:none;"></div>
和CSS:
.locking-overlay
{
position: absolute;
width:930px;
@*height: 700px;*@
z-index: 1000;
background-color: black;
opacity: 0.5;
filter: alpha(opacity=50);
}
每一个都在我的本地机器上完美运行。 BUt当我在服务器上运行此代码时,我收到脚本错误“访问被拒绝”错误。子窗口位于同一个域中,我正在使用IIS7。
编辑:脚本代码位于外部js文件中。
答案 0 :(得分:1)
您的clinicalDataUrl是否遵循同源策略? 这意味着你可以在你想要的任何网址上打开一个新窗口但是要与它进行交互,你需要在你尝试互动的同一个域,协议和端口。
编辑:这就是我在第二次评论中的意思
$(function(){
$(window).on('unlockOpportunityEvent',unlockOpportunity);
});
function OpenChild() {
lockOpportunity();
var origin = window;
if (ClinicalDataWindow == null || ClinicalDataWindow.closed) {
ClinicalDataWindow = window.open(clinicalDataUrl, 'EditOppClinicalData', GetWindowOptions(1020, 600), true);
var unloadFunc = function () { $(origin).trigger('unlockOpportunityEvent'); };
if (ClinicalDataWindow) {
if (ClinicalDataWindow.addEventListener) {
ClinicalDataWindow.addEventListener('unload', unloadFunc, false);
}
else {
ClinicalDataWindow.attachEvent('onunload', unloadFunc);
}
}
}
else {
ClinicalDataWindow.focus();
}
return false;
}
function lockOpportunity() {
$('#overlay').addClass('locking-overlay');
$('#overlay').height($(".t-edit-form-container").height());
$('#overlay').show();
}
function unlockOpportunity() {
$('#overlay').removeClass('locking-overlay');
$('#overlay').hide();
}