0

问题的标题似乎具有误导性,因为我知道如果您想每次都引用 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.');
     }
}
};

如您所见,第一个变量将数据放入数组中以放入EventSourceurl。显然,这不会像页面那样继续更新,也不会source。我试着把所有东西都串起来,而不是source.onmessage...变成;

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

但这不起作用,因为事件源没有改变。我希望每次请求 SSE 源时都引用 DOM。我知道这不是做这些事情的好方法,但在这种情况下我看不到解决方法。

4

1 回答 1

0

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

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

于 2012-12-12T19:59:36.117 回答