我已经开始使用 Firebase 和 Phonegap(目前仅适用于 Android,使用 Adobe 的在线构建工具)。我从他们的网站上获取了 Firebase 聊天示例,并将其几乎“按原样”粘贴到 index.html 页面,并与 phonegap config.xml 所需的捆绑在一起。在我的 android 手机上运行带有单个 index.html 的应用程序时 - 它运行 100%。当我将它移动到链接到 index.html 的某个内部页面(即 chat.html)时,我可以接收传入的聊天,但没有一个出去。即使相同的代码出现在 index.html 上时,它看起来也没有正确加载。
我的猜测是它与我所说的参考文献、它们的顺序和位置有关。
以下是我的代码片段,如果需要,我可以说明更多:
在 config.xml 上:
<feature name="http://api.phonegap.com/1.0/device" />
<feature name="http://api.phonegap.com/1.0/notification"/>
<access origin="*" />
在 index.html 上:
<script type="text/javascript" charset="utf-8" src="cordova-2.2.0.js"></script>
<script type="text/javascript" src="firebase.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="my.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
在 chat.html 我评论了所有的脚本标签(当然也尝试了所有这些标签都存在(未注释),结果相同)。
my.js(完整):
$(document).on("mobileinit", function () {
// Make your jQuery Mobile framework configuration changes here!
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
$(document).ready(function () {
// Get a reference to the root of the chat data.
var messagesRef = new Firebase('https://alon.firebaseio.com/');
$('.send-action').click(function () {
var name;
if (navigator.platform == 'Win32') {
name = 'me';
} else {
name = device.name + ' (' + device.uuid + ')'; //$('#nameInput').val();
}
var text = $('#messageInput').val();
messagesRef.push({ name: name, text: text });
$('#messageInput').val('');
});
// Add a callback that is triggered for each chat message.
messagesRef.on('child_added', function (snapshot) {
var message = snapshot.val();
$('<div/>').text(message.text).prepend($('<em/>').text(message.name + ': ')).appendTo($('#messagesDiv'));
$('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;
if (message.name != device.name + ' (' + device.uuid + ')') {
navigator.notification.beep(1);
}
});
});
谢谢!