Я работаю над приложением facebook. У меня есть следующий код, который работает нормально, если я запускаю его так
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $facebook->getAppId(); ?>',
session : <?php echo json_encode($session); ?>,
status : true,
cookie : true,
xfbml : true
);
$('#stgame').click(sendRequest);
function sendRequest() {
document.getElementById('gameSetup').style.display = 'block';
FB.ui({
method: 'apprequests',
message: '<?=$me[name];?> has invited you to a fun game of Towers. To play, just click on accept. Towers is a "3D" tile stacking word game.',
},
function (response) {
if (response && response.request_ids) {
var requests = response.request_ids.join(',');
$.post('handle_requests.php',{uid: <?php echo $uid; ?>, request_ids: requests},function(resp) {
window.location.replace("play.php?" + resp);
});
} else {
document.getElementById('gameSetup').style.display = 'none';
}
});
return false;
}
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
однако мне нужно изменить его, чтобы я мог отправить переменную в «sendRequest» и изменить триггер на встроенный «onClick»
Для этого я создал ссылку на страницу, например:
<a><img src=/images/start.png onClick=sendRequest('1234556');></a>
и измените функцию sendRequest на sendRequest (переменная), чтобы она могла принимать переменную
Однако, когда я делаю это, каждый раз, когда я нажимаю на кнопку, которая имеет триггер onClick, он выдает мне сообщение об ошибке "не могу найти переменную sendRequest"
Я думаю, это потому, что onClick не видит функцию sendRequest.
Итак, мой вопрос, как мне вызвать эту функцию из onClick. принимая во внимание, что на странице будет несколько кнопок, для которых потребуется вызывать функцию, присваивая ей разные значения переменной для каждой из них.
Мой текущий код выглядит так:
<a><img src=/images/start.png onClick=sendRequest('123');></a>
<a><img src=/images/start.png onClick=sendRequest('456');></a>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $facebook->getAppId(); ?>',
session : <?php echo json_encode($session); ?>,
status : true,
cookie : true,
xfbml : true
}
);
function sendRequest(opponent) {
document.getElementById('gameSetup').style.display = 'block';
FB.ui({
method: 'apprequests',
to:opponent,
message: '<?=$me[name];?> has invited you to a fun game" tile stacking word game.',
},
function (response) {
if (response && response.request_ids) {
var requests = response.request_ids.join(',');
$.post('handle_requests.php',{uid: <?php echo $uid; ?>, request_ids: requests},function(resp) {
window.location.replace("play.php?" + resp);
});
} else {
document.getElementById('gameSetup').style.display = 'none';
}
});
return false;
}
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
Если бы кто-нибудь мог сказать мне, как я могу вызвать эту функцию, я был бы признателен. Насколько я знаю, функция должна оставаться внутри окна, функция fbAsyncInit, чтобы реально работать.
Любая помощь будет принята с благодарностью.