在我使用之前jquery 1.10.x
,jquery ui 1.10.x
和prime ui 1.1
。
对于prime ui
,有一个对话框小部件,其用法如下:
jQuery('#div1').puidialog({
...
modal: true,
width: 600
....
});
然后当jQuery('#div1').puidialog('show');
被调用时,会弹出一个对话框并显示这个div。
但是,在我将 jquery 升级到3.4.1
jquery ui 到1.12.1
之后,调用jQuery('#div1').puidialog('show');
无法显示对话框,控制台上没有错误只是说JQMIGRATE: jQuery.isWindow() is deprecated
。
调试后,我发现问题发生在下一个代码中primeui-1.1.js
:
_initPosition: function() {
//reset
this.element.css({left:0,top:0});
if(/(center|left|top|right|bottom)/.test(this.options.location)) {
this.options.location = this.options.location.replace(',', ' ');
this.element.position({
my: 'center',
at: this.options.location,
collision: 'fit',
of: window,
//make sure dialog stays in viewport
using: function(pos) {
var l = pos.left < 0 ? 0 : pos.left,
t = pos.top < 0 ? 0 : pos.top;
jQuery(this).css({
left: l,
top: t
});
}
});
}
else {
var coords = this.options.position.split(','),
x = coords[0].trim(),
y = coords[1].trim();
this.element.offset({
left: x,
top: y
});
}
this.positionInitialized = true;
}
如果我从 中删除of: window
,this.element.position({...})
则可以显示对话框,但此对话框位于left top
.
也就是说,在我将 jquery 从1.10.x
升级到之后3.4.1
,无法显示此 primeui 对话框。如果我从中删除of: window
,this.element.position({...})
这个 primeui 对话框将显示在左上方。
我想要的是这个对话框位于center
浏览器上,我该怎么做?