3

我有一个 html

索引.html:

<html>

<head>
    <title>Facebook</title>

    <script type="text/javascript" src="../xdata/js/jquery.js"></script>
</head>

<body>
    Tasks (<span id="tasks">0</span>)
    Messages (<span id="messages">0</span>)
    Notifications (<span id="notifications">0</span>)


    <script type="text/javascript">
    $(document).ready(function() {
    var pagetitle = document.title;
    document.title = pagetitle+' NEW NOTIFICATON';
    });
    </script>
</body>

</html>

和一个xml文件

页面.xml:

<?xml version="1.0" ?>
<page tasks="1" messages="3" notifications="3"/>

我如何使每 5 秒index.html读取page.xml和修改 Facebook 中的标题(“(1) Facebook”)以及修改任务、消息、通知......

我在阅读 xml 时遇到问题。如果有人可以帮助我吗?

PS - 我更喜欢 jQuery ...但 JavaScript 也可以

4

4 回答 4

2

以下是在 jquery 中完成的,尽管您的 xml 文件有一个小错误,导致解析问题。

假设你的 xml 文件是这样的:

<?xml version="1.0"?>
<data>
    <page tasks="1" messages="3" notifications="3"/>
</data>

以下代码将相应地修改页面,当然使用 jquery:

$(document).ready(function() {
    function get_info() {
        $.ajax({
            type: "GET",
            url: "page.xml",
            dataType: "xml",
            cache: false,
            complete: function(doc) {
                var tasks = $(doc.responseText).find("page").attr("tasks");
                var msgs = $(doc.responseText).find("page").attr("messages");
                var notes = $(doc.responseText).find("page").attr("notifications");
                if (tasks != $('#tasks').text() ||
                    msgs != $('#messages').text() ||
                    notes != $('#notifications').text()) {
                    document.title = "Facebook" + ' NEW NOTIFICATON';
                }
                $('#tasks').text(tasks);
                $('#messages').text(msgs);
                $('#notifications').text(notes);
            }
        });

    }
    setInterval(function() {
        get_info();
    }, 5000);
});

我花了一些时间来开发这个,我知道它确实有效。

于 2012-07-10T21:55:51.370 回答
0

将您的逻辑放在 setTimeout 方法调用中:

setTimeout(function(){
    alert('I am displayed after 3 seconds!');
}, 3000);
于 2012-07-10T20:28:11.257 回答
0
    var tid = setTimeout(function_name, 5000);

function function_name() {
  // do some stuff...
  tid = setTimeout(function_name, 5000); // repeat
}
function abortTimer() { // to stop the timer
  clearTimeout(tid);
}
于 2012-07-10T20:28:32.223 回答
0
    Try this:
    (document).ready(function() {
        function getPage() {
           var page= $.ajax({
                type: "GET",
                url: "page.xml",
                dataType: "xml",
                async : false,
            }).responseXML;
       $(page).find('page').each(function(){
         var tasks = $(this).attr("tasks");
         var msgs = $(this).attr("messages");
         var notes = $(this).attr("notifications");
         $('#tasks').html(tasks);
         $('#messages').html(msgs);
         $('#notifications').html(notes);
      });
   }
});
    setInterval(getPage,5000);
于 2012-07-11T13:14:58.217 回答