【发布时间】:2015-01-04 22:13:09
【问题描述】:
我在 Android 的 WebView 中使用 Google Cloud Channels,但是以类似方式使用任何套接字时也可能会出现同样的问题。
问题:处理程序没有传递参数,可能是因为函数在不同的范围内调用。
这是我的代码:
<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 = (function (message) {return onMessage})(message)
在许多变体中,但无法使其工作。
我承认我通常不开发 JavaScript,而且我不完全理解 JavaScript 在这里做了什么,但在我看来,需要提取参数以某种方式包装的函数。
请大家指点一下。
--
为简洁起见,我删除了部分代码。
【问题讨论】:
标签: javascript android channel-api