【问题标题】:Viewing a webpage in a webpage using XMLHttpRequest使用 XMLHttpRequest 在网页中查看网页
【发布时间】:2015-10-22 19:46:53
【问题描述】:

我已经构建了一个 Web 应用程序,其中包含一个显示 html 页面内容的预览窗口。由于 html 页面不断更新,我需要预览窗口每 0.5 秒反映一次这些更改。

除了预览窗口在刷新时闪烁之外,一切正常。这只是有时会发生,而且似乎非常喜怒无常。大部分时间不闪烁,html页面的更新非常流畅。

这是代码 - 任何人都可以就如何防止闪烁的发生提出任何建议吗?

    //Get the preview data and insert / refresh it in the #preview-fram div
    function refreshinfo(){
        var xmlhttp;
        var id = $.urlParam('id');
        var grid = $.urlParam('grid');                      


        if (window.XMLHttpRequest){
            xmlhttp=new XMLHttpRequest();
        }
        else{
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
            document.getElementById("preview-frame").innerHTML=xmlhttp.responseText;
            }
        }

        xmlhttp.open("GET","http://webhost:8888/subs-banner-generator/preview?id="+id+'&grid='+grid,true);
        xmlhttp.send();

        }

        setInterval(refreshinfo, 500);  //refresh the data every 0.5 secs

【问题讨论】:

    标签: javascript jquery html ajax xmlhttprequest


    【解决方案1】:
    1. 500ms 对于服务器来说并不算多
    2. 不建议在 Ajax 中使用 setInterval
    3. 你标记了这个 jQuery,为什么不使用它?

    这样

    function refreshinfo(){
        var id = $.urlParam('id');
        var grid = $.urlParam('grid');  
        var url = "http://webhost:8888/subs-banner-generator/preview?id="+id+'&grid='+grid;
        $("#preview-frame").load(url,function() {
          setTimeout(refreshinfo,500); // will load the page again 500ms after successful load
        });
    }
    $(function() {
      refreshinfo();
    });
    

    【讨论】:

    • 谢谢。我刚刚实现了你的代码,它确实有效。你怎么能确定它会解决我的闪烁问题呢?
    • 它肯定会让它变得不那么突出,因为如果加载和渲染时间超过 500 毫秒,您的代码会中断渲染
    • 是的,有道理。我会在接下来的几天内对其进行测试,如果闪烁消失,则将您的答案标记为正确!
    猜你喜欢
    • 2010-12-31
    • 2021-07-16
    • 2017-12-21
    • 1970-01-01
    • 2016-10-11
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多