0

我正在一个不允许任何服务器端脚本的网站平台上工作,所以 jquery 和 javascript 几乎是我必须使用的全部。我正在尝试创建一个脚本来使用该站点,该站点将每 10 秒更新一个包含收件箱消息计数的 div。我已经成功地使 div 每十秒刷新一次,但问题在于页面浏览量。我的脚本正在刷新整个页面并计算页面视图,但我只想刷新一个 div。我的脚本引起的问题的一个例子是,当查看网站上具有页面查看计数器的任何内容(论坛帖子、博客帖子等......)时,页面浏览量会因为脚本刷新而变得疯狂。我对 Javascript 很陌生,所以我不完全确定有办法解决这个问题。

我正在使用的内容如下:

    <div id="msgalert" style="display: none"; "width: 100px !important">
<a href=""> You have $inbox_msg_count new messages.</a>
</div>

$inbox_msg_count是一个获取消息计数的调用,由站点所在的平台提供。使用时会自动显示消息计数。

然后完成所有工作的脚本是这样的:

    <script>
 setInterval(function(facepop){
  var x= document.getElementById("SUI-WelcomeLine-InboxNum");
var z = x.innerText;
 if(x.textContent.length > 0)
$("#msgalert").show('slow');
}, 1000);
facepop();
</script>
<script>
setInterval(function() {  
$("#msgalert").load(location.href+" #msgalert>*","");  
}, 1000); // seconds to wait, miliseconds
</script>

我意识到我可能没有尽力解释这一点,但那是因为我自己对此很困惑。就像我之前提到的,这段代码的功能正是我想要的,但我不希望它刷新整个页面并增加页面浏览量。任何帮助深表感谢。

4

3 回答 3

0

我认为这可能没有表格就可以完成,而且绝对没有 iframe(不寒而栗)..

也许是这样的?

$(document).ready(function()
{
  setInterval(function(facepop)
     {
        var x= document.getElementById("SUI-WelcomeLine-InboxNum");
        var z = x.innerText;

        if(x.textContent.length > 0)
           $("#msgalert").show('slow');

        $.ajax({
            type: "POST",
            url: location.href,
            success: function(msg)
             {
                $("#msgalert").html(msg);
             }
        });

     },1000);

目前尚不完全清楚您要做什么(或者可能只是我太累了(现在是午夜......)),但上面的 $.ajax() 调用是我主要的事情会建议。

将这两个函数封装在一个 setInterval() 中会使事情更容易阅读,并且会消除显示msgalert元素和“重新加载”它之间的 1 秒间隙。

于 2014-09-20T15:01:37.837 回答
0

您可能会尝试查看iframe并将其用作更新/刷新您的内容 (div) 的一种方式。首先设置一个 iframe,并给它一个 id,然后用 JS 抓取对象并对其调用刷新。

于 2012-10-30T05:04:59.980 回答
0

好吧,您的问题似乎有点不同,所以我认为从 div 中提交一个可能会对您有所帮助...

$(document).ready(function() 
{
            // bind 'myForm' and provide a simple callback function
               $("#tempForm").ajaxForm({
               url:'../member/uploadTempImage',//serverURL
               type:'post',
               beforeSend:function()
               {
                   alert(" if any operation needed before the ajax call like setting the value or retrieving data from the div ");
               },
               success:function(e){
                alert("this is the response data simply set it inside the div ");
               }
        });
        });
于 2012-10-30T05:53:17.450 回答