Я использую Google Cloud Channels в веб-браузере Android, но такая же проблема, вероятно, возникает и при использовании любого сокета аналогичным образом.JavaScript Аргумент не передан через обработчик
Проблема: аргумент не передается обработчиком, возможно потому, что функции вызываются в другой области.
Вот мой код:
<html>
<head>
<script src='{{ channelurl }}jsapi'></script>
</head>
<body>
<script type="text/javascript">
onMessage = function(message) {
};
var token = '{{ token }}';
var channel = new goog.appengine.Channel(token);
var handler = {
'onmessage': onMessage,
};
var socket = channel.open(handler);
socket.onmessage = onMessage;
</script>
</body>
</html>
OnMessage имеет один аргумент (строка) и моя функция OnMessage правильно называется, но аргумент «не определен», вероятно, потому, что он находится в другой области.
Этот вопрос может быть дубликатом этих или других подобных вопросов, и я попытался применить рецепты, данные там, но не удался.
How do I pass arguments to an event handler? How to pass event as argument to an inline event handler in JavaScript?
Я на самом деле применяется код здесь
http://2cor214.blogspot.com/2010/08/passing-arguments-to-event-handler-in.html
и пытался играть с такими вещами, как это:
socket.onmessage = (функция (сообщение) { return onMessage}) (сообщение)
во многих va но не мог заставить его работать.
Я признаю, что я, как правило, не разрабатываю JavaScript, и я не совсем понимаю, что здесь делает JavaScript, но мне кажется, что аргумент должен быть извлечен из-за какой-то функции.
Может ли кто-нибудь пролить свет, пожалуйста.
-
Я удалил части моего кода для краткости.