当我尝试在Firefox中加载此脚本时,它给了我这个错误:参考错误:未定义onListFriends。
该代码在Safari和Chrome中可以正常运行。
listFriends(onListFriends);
function onListFriends() {
console.log("friends were listed.");
setOnline();
}
这是稍后在文件中定义的listFriends函数:
function listFriends(callback) {
FB.api(
"me/friends",
function (response) {
console.log("Got FB.api response");
var numOnline = 0;
var numFriends = response.data.length;
for (var i = 0; i < numFriends; i++) {
isOnline(i, response.data, gotOnline);
var callbackInc = 0;
function callbackIfYouCan(callback) {
callbackInc++;
if (callbackInc == numFriends) {
interiorCallback(callback);
}
}
function gotOnline(res, ind, data) {
console.log("Got response from isOnline: " + res);
var id = data[ind].id;
var checkbox = document.createElement('input');
checkbox.type = "checkbox";
checkbox.name = "friends";
checkbox.id = id;
checkbox.value = data[ind].name;
console.log("For user " + checkbox.value);
var label = document.createElement('label');
label.htmlFor = id;
label.appendChild(document.createTextNode(data[ind].name));
if (res == 1) {
document.getElementById("online").appendChild(checkbox);
document.getElementById("online").appendChild(label);
document.getElementById("online").appendChild(document.createElement('br'));
numOnline++;
} else {
document.getElementById("offline").appendChild(checkbox);
document.getElementById("offline").appendChild(label);
document.getElementById("offline").appendChild(document.createElement('br'));
}
callbackIfYouCan(callback);
}
}
function interiorCallback(callback) {
if (numOnline > 0) {
var textField = document.createElement('input');
textField.setAttribute('type', 'text');
textField.id = "message";
textField.value = "I would like to hang out at this place in 15 minutes.";
var button = document.createElement('button');
button.setAttribute('type', 'button');
console.log("Created tagging button.");
button.onclick = function () {
console.log("Tagging button pressed.");
getIdsFromCheckboxes();
}
button.innerHTML = "Tag your friends.";
document.getElementById("online").appendChild(textField);
document.getElementById("online").appendChild(button);
}
callback();
}
});
}
Firefox和Chrome加载此代码的方式有什么区别?任何帮助,将不胜感激。
JS解释器逐行读取脚本。在您的情况下,当您像回调一样传输onListFriends时,解释器不知道那里的声明。
所以...切换您的函数声明和listFriends调用:
function onListFriends() {
console.log("friends were listed.");
setOnline();
}
listFriends(onListFriends);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句