【问题标题】:Dynamic web page resizing with javascript使用 javascript 调整动态网页大小
【发布时间】:2011-05-26 03:41:04
【问题描述】:

我目前有一个页面,当最终用户调整窗口大小时,该页面正在通过使用 javascript 调整大小,以便在不需要时减少或消除滚动。我有一个 loader.js jquery 文件,当用户从左侧菜单中选择一个选项时,它会挑选出 .html 文档以放入页面的内容部分:

$("#response").load("home.html");
$("#home").click(function(){
// load home page on click
    $("#response").load("home.html");
    setTimeout("resizefunc()",500);
});
$("#about").click(function(){
// load about page on click
$("#response").load("about.html");
    setTimeout("resizefunc()",500);
});
//etc

虽然这些超时功能大部分时间都有效,但如果页面加载异常缓慢,它们可能会因任何原因而失败。我正在使用 document.ElementId.scrollHeight 来确定每个新页面的高度,但它似乎只检测正确应用更改后的高度。如果 javascript 在页面内容之前加载,则调整大小失败。

似乎如果我对每个页面都使用完整的 html 文档,那么问题就无关紧要了。我可以将一个 onLoad 事件放入每个事件的主体中,并在那里调整其大小……但由于标签仅在我有点不知所措时才加载。我目前的实现“有效”,但我觉得应该有更有效的东西。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    不要使用 onLoad,而是将代码包装在

    $(window).load(function() {
      // your code here
    });
    

    另外,不要使用仅将文件名作为参数的 load(),而是使用:

    $('#response').load('file.html', function() {
      resizefunc();
    });
    

    【讨论】:

    • 将每个超时更改为您在上面列出的内容,并且有效。不知道为什么它会这样工作,但如果我只是在 .load 之后调用 resize 函数,但在同一个点击事件中......无论哪种方式,感谢您的快速响应
    • 不用担心。它之所以有效,是因为 load() 函数中的第二个参数是一个回调函数,它在内容加载后触发,无需“猜测”内容加载需要多长时间。 PS:如果它是一个正确的解决方案,将答案标记为已批准也很好:)
    • 抱歉,第一次在这里发帖:P 已标记。
    【解决方案2】:

    除了“加载”,您还可以使用“调整大小”作为事件之一。这将允许动态调整大小。

    $(window).resize(function() {
        resizefunc()
    });
    
    function resizefunc() 
    {
       // code to resize.
    }
    

    见:http://api.jquery.com/resize/

    【讨论】:

    • 我没有意识到 .resize() 当页面滚动长度改变时触发了......我只是假设它只是实际的窗口边框调整大小。如果是这样,那么这也是一个有效的答案。我明天起床试试。
    • @Ryan Baker - 是的,试一试,通常我们同时使用“加载”和“调整大小”。您可以使用“css”来实际调整 html 内容的大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2011-10-28
    • 2017-06-13
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多