我試圖在我的網站上顯示與facebook服務器同步的多變時鐘。 在FB服務器時,請訪問: https://api.facebook.com/method/fql.query?query=SELECT+now%28%29+FROM+link_stat+WHERE+url+%3D+%271.2%27&format=jsonFacebook的服務器時間在javascript
如何使它多變的每一秒而無需刷新頁面?
我試圖在我的網站上顯示與facebook服務器同步的多變時鐘。 在FB服務器時,請訪問: https://api.facebook.com/method/fql.query?query=SELECT+now%28%29+FROM+link_stat+WHERE+url+%3D+%271.2%27&format=jsonFacebook的服務器時間在javascript
如何使它多變的每一秒而無需刷新頁面?
我不會每秒都調用API。
取而代之,我會在開始時只獲得Facebook服務器的一次時間。然後,我會增加我的時間值每秒通過循環使用javascript:
setTimeout(function() { /* increment time */ }, 1000);
BERGI:[{"anon":1354654854}]
是unix time。事實上,Facebook經常(總是?)處理使用這種表示的時間。
我試圖得到這樣的時間把它放在你的腳本'$ sql = $ facebook-> api_client-> fql_query(「SELECT now()」);'但它不適用於我。 – user1743942
假設一些非書面的功能,它應該看起來像:
var requestBegin = Date.now();
getServertimeFromFacebook(function callback(fbTime) {
var requestEnd = Date.now();
var latency = (requestEnd - requestBegin)/2;
var curDevicetime = Date.now(); // = requestEnd, of course
var difference = fbTime - latency - curDeviceTime;
function clock() {
var cur = Date.now();
var curFbTime = cur + difference;
show(curFbTime); // print, log, whatever
};
setInterval(clock, …); // you could use a self-adjusting clock
// by using a setTimeout for each tick
});
你可以做
show = function(t) { console.log(new Date(t).toString()); };
getServertimeFromFacebook = function(cb) {
ajax("https://api.facebook.com/method/fql.query?query=SELECT+now%28%29+FROM+link_stat+WHERE+url+%3D+%271.2%27&format=json", function(responsetext) {
var obj = JSON.parse(responsetext);
var ts = obj[0].anon,
tms = ts * 1000;
cb(tms);
});
};
如何從頁面上的第二個腳本打印時鐘? – user1743942
你是什麼意思的「在頁面上」?只需使用一個'show'函數,通過DOM操作顯示它。 – Bergi
我試過'document.write(cb(tms))',怎麼用'show'? – user1743942
服務器時間是'[{ 「匿名」:1354654854}]'? ? – Bergi
是的,但它是unix時間戳格式;) – user1743942
哦,它真的是自紀元以來的秒。本來會期待更多的描述性格式;希望這種格式不會改變非匿名用戶。 – Bergi