Javascript 如何仅跟踪浏览器窗口调整大小
我正在使用jquery UI对话框,我想相对于Javascript 如何仅跟踪浏览器窗口调整大小,javascript,jquery,events,jquery-ui-dialog,Javascript,Jquery,Events,Jquery Ui Dialog,我正在使用jquery UI对话框,我想相对于窗口高度和宽度调整对话框的大小,但是当我使用$(窗口).resize()或$(窗口).on('resize')时,它们也会跟踪调整模型的大小。因此,当my$(window).resize()更新对话框的高度-宽度时,模态会触发resize,从而在自身上触发另一个resize 如何将$(window).resize()限制为只调整浏览器窗口大小? //... var isBrowserResize = true; //... function p
窗口高度和宽度调整对话框的大小,但是当我使用$(窗口).resize()
或$(窗口).on('resize')
时,它们也会跟踪调整模型的大小。因此,当my$(window).resize()更新对话框的高度-宽度时,模态会触发resize,从而在自身上触发另一个resize
如何将$(window).resize()限制为只调整浏览器窗口大小?
//...
var isBrowserResize = true;
//...
function preventWindowResizeEvent() {
isBrowserResize = false;
}
//...
$(window).resize(function() {
if (isBrowserResize) {
//...
} else {
isBrowserResize = true;
}
});
您可以从任何resize
中调用preventWindowResizeEvent
,您不想为主窗口resize运行事件,以便仅缩小到实际的浏览器窗口大小:
var onBrowserReszie = function(e){
if(e.target === window){
// Do something here spcific to browser window resize
}
}
$(window).on("resize",onBrowserReszie)
我如何在不改变任何现有代码(例如jqeuryui对话框大小)的情况下实现这个想法?这是一个解决方案,但非常模糊……您需要实现它,因此不可能不更改代码。我认为您可以这样做:$(“*”).resize(函数(){if($(this)!==$(窗口))preventWindowResizeEvent();});注意,我没有测试这个,也不知道它是否有效,所以我没有将它添加到我的答案中,但我认为值得一试。如果可行,请告诉我,这样我将编辑我的答案以添加此函数,以便将来人们可以轻松解决此问题。$(window).on(“resize”,function(e){If(e.target==window)console.log(“window”)
这似乎有效,并且只有在调用方元素为window时才会触发,所以不会有循环函数调用。”$(“*”).resize()`在我看来是个坏习惯。