Prototype을 사용하는 웹 사이트의 사용자 스크립트를 작성하고 있습니다. GM libs를 사용하기보다는 (주로 Chrome 용으로 재사용 할 수 있음), 이미로드 된 Prototype 함수를 사용하기로 결정했습니다.프로토 타입 Ajax.Request는 마지막 콜백 만 호출합니다.
각각의 프로필 페이지에서 온라인 상태 요소를 확인하여 고유 한 사용자를 나타내는 테이블 행을 반복합니다.
dom = unsafeWindow; //shortening unsafewindow
console.log("main start");
var rows = dom.$$("#users tbody>tr");
var users = dom.$$("#users tbody>tr .user_avatar");
console.log(rows);
for (var i=0; i < users.length; i++) {
var row = rows[i];
var user = users[i];
new dom.Ajax.Request("https://stackoverflow.com/users/" + user["title"] + ".html", { //user["title"] is the username
method:'get',
onSuccess: function(response) {
var state = "offline";
if (response.responseText.indexOf("now_online") > -1) {
state = "online";
}
row.childElements()[1].innerHTML += "<br /><b>" + state + "</b>";
},
onFailure: function(request) {
row.childElements()[1].innerHTML += "<br /><b>Error</b>";
}
}
);
}
방화범에서 실행되는 스크립트를 관찰, 난 단지 마지막 행에 표시됩니다 "온라인"은 그러나 200의 상태로 유효한 응답 본문을 반환 GET을 모두 볼. 이전 행에 대한 콜백이 호출되지 않는 것처럼 보입니다. 나는 각 줄 다음에 console.log 문으로이를 확인했다.
FB와 Firefox 3.5가 다중 Ajax를 처리하는 방법에 문제가 있음을 발견했습니다. 요청. http://code.google.com/p/fbug/issues/detail?id=1948. 필자는 Firebug의 최신 베타 버전으로 업그레이드했으며 Firefox의 가장 최근 베타 버전이 아니며 여전히 주사위가 없습니다. FB가 완전히 비활성화 된 경우에도 문제가 발생합니다.
저는 지금이 시점에서 공백을 그리기 때문에 모든 제안에 대해 공개하고 있습니다. 감사.
확인하십시오. http://stackoverflow.com/questions/1061622/javascript-onclick-anonymous-function-help/1061671#1061671 –
'요소'의 출처는 어디입니까?를 참조하십시오. 그것이 어떻게 인스턴스화 되었습니까? –
또한 - http://james.padolsey.com/javascript/closures-in-javascript/ –