javascript - 每次都为变量引用DOM

时间:2012-12-12 19:54:07

标签: javascript jquery server-sent-events

问题的标题似乎有误导性,因为我知道如果你想每次都引用DOM,你就不应该使用变量。但是,情景有点不同;我已经创建了一个SSE脚本,在第一次加载页面时效果很好,但由于页面内容不断变化,因此并不总是有效。

var objts = $(".newsItem:first").data("ts");
var objid = $(".newsItem").data("id"); 
var ids = $.makeArray(objid); //variable of IDS
var ts = $.makeArray(objts); //variable of ts

var source=new EventSource("AJAX/get_feed_updates.php?ids=" + ids + "&ts="+ ts +"");

source.onmessage=function(event)
  {
    if (event.data > 0){
        document.title = '(' + event.data + ') ' + originalTitle;

    if (event.data == 1){// no plurals
           $("#refreshFeed").fadeIn('slow').html(event.data + ' more news item.');
     }

     if (event.data > 1){ //plurals
        $("#refreshFeed").fadeIn('slow').html(event.data + ' more news items.');
     }
}
};

正如您所看到的,第一个变量将数据放入一个数组中以放入EventSource网址。显然,这不会像页面那样继续更新,也不会source。我尝试将所有内容串在一起,而不是成为source.onmessage...;

new EventSource("..." + $.makeArray($".newsItem")...).onmessage=function(event)

但由于事件源不会改变,因此无效。我希望每次请求SSE源时都引用DOM。我知道这不是做这些事情的好方法,但在这种情况下我找不到解决方法。

1 个答案:

答案 0 :(得分:0)

对于这种情况,我不会使用EventSource,因为您需要传递信息。

尝试使用websockets或使用某种Comet技术。