毎回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
URLに入れます。明らかに、これはページのように更新を継続せず、どちらも更新しませんsource
。私はすべてをつなぎ合わせてみたので、代わりにsource.onmessage...
なりました。
new EventSource("..." + $.makeArray($".newsItem")...).onmessage=function(event)
しかし、イベントソースは変更されないため、これは機能しませんでした。SSEソースが要求されるたびにDOMが参照されるようにしたい。私はこれがこれらのことをする良い方法ではないことを知っていますが、この場合それを回避する方法を見ることができません。