伪造 window 调整大小,使所有仅调整大小的 JavaScript 加载
Fake a window resize, to make all resize-only JavaScript load
假设我有 JavaScript 在 window 调整大小时运行,但如果您使用 window.load 或 document.ready 它不起作用。
(我的情况)。
我不是在单独寻找 window.load 或 document.ready (jQuery)...
我想从字面上伪造 window 调整大小...以使仅调整大小的脚本加载。
如何在不调整 window 的情况下伪造 window 调整大小?
尽可能不要伪造任何东西。这会使您的代码更难阅读和理解。像这样重构您的代码:
function onResize(e)
{
// does window.resize stuff
}
$(document).load(function(e){
// when the document is loaded, do resize stuff as well
onResize(e);
});
// add event listener to window.resize
$(window).resize(onResize);
只需调用 $(window).trigger('resize');
它将触发调整大小,并且将调用您在调整大小上注册的任何内容。
$(window).resize(function() {
alert("Work done when resize is being called");
});
$(window).resize(function() {
alert("More work");
});
$("*").click(function(){
alert("Triggering resize");
$(window).trigger('resize');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Click anywhere to trigger the resize
假设我有 JavaScript 在 window 调整大小时运行,但如果您使用 window.load 或 document.ready 它不起作用。 (我的情况)。
我不是在单独寻找 window.load 或 document.ready (jQuery)... 我想从字面上伪造 window 调整大小...以使仅调整大小的脚本加载。
如何在不调整 window 的情况下伪造 window 调整大小?
尽可能不要伪造任何东西。这会使您的代码更难阅读和理解。像这样重构您的代码:
function onResize(e)
{
// does window.resize stuff
}
$(document).load(function(e){
// when the document is loaded, do resize stuff as well
onResize(e);
});
// add event listener to window.resize
$(window).resize(onResize);
只需调用 $(window).trigger('resize');
它将触发调整大小,并且将调用您在调整大小上注册的任何内容。
$(window).resize(function() {
alert("Work done when resize is being called");
});
$(window).resize(function() {
alert("More work");
});
$("*").click(function(){
alert("Triggering resize");
$(window).trigger('resize');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Click anywhere to trigger the resize