Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cordova Firebase与Phonegap-在index.html页面上工作完美,而在其他页面上部分工作_Cordova_Firebase - Fatal编程技术网

Cordova Firebase与Phonegap-在index.html页面上工作完美,而在其他页面上部分工作

Cordova Firebase与Phonegap-在index.html页面上工作完美,而在其他页面上部分工作,cordova,firebase,Cordova,Firebase,我已经开始使用Firebase和Phonegap(目前仅适用于Android,使用Adobe的在线构建工具)。我从他们的网站上获取了Firebase聊天示例,并将其几乎“按原样”粘贴到index.html页面,与phonegap config.xml所需的绑定在一起。 在我的android手机上运行带有single index.html的应用程序时,它会100%运行。 当我将它移动到某个链接到index.html的内部页面(即chat.html)时,我可以接收到传入的聊天信息,但没有一个会发出。

我已经开始使用Firebase和Phonegap(目前仅适用于Android,使用Adobe的在线构建工具)。我从他们的网站上获取了Firebase聊天示例,并将其几乎“按原样”粘贴到index.html页面,与phonegap config.xml所需的绑定在一起。 在我的android手机上运行带有single 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(完整):

$(文档).on(“mobileinit”,函数(){
//在这里更改jQuery移动框架配置!
$.support.cors=true;
$.mobile.allowCrossDomainPages=true;
});
$(文档).ready(函数(){
//获取对聊天数据根的引用。
var messagesRef=new Firebase('https://alon.firebaseio.com/');
$('.send action')。单击(函数(){
变量名;
如果(navigator.platform==“Win32”){
name=‘我’;
}否则{
name=device.name+'('+device.uuid+');//$('#nameInput').val();
}
var text=$('#messageInput').val();
messagesRef.push({name:name,text:text});
$('#messageInput').val('');
});
//添加为每条聊天信息触发的回调。
messagesRef.on('child_added',函数(快照){
var message=snapshot.val();
$('').text(message.text).prepend($('').text(message.name+':')。appendTo($('#messagesDiv'));
$('#messagesDiv')[0]。scrollTop=$('#messagesDiv')[0]。scrollHeight;
如果(message.name!=device.name+'('+device.uuid+')){
navigator.notification.beep(1);
}
});
});

谢谢

您正在收听DeviceRady事件吗?您需要在任何使用PhoneGap设备API的页面上显示。我看到您使用的是JQM,这意味着您的页面通常会通过AJAX加载,这使得我的建议无效,但如果您将其改写(JQM允许您这样做)那么这将是一个问题。

这可能有点晚了,您可能已经意识到了这一点——但是当您将所有代码移动到另一个页面时,firebase停止工作的原因是,您将其移动到的页面可能位于根文件夹(即-/chat/index.html)之外


上面有两个脚本引用,其中的源代码是“firebase.js”和“my.js”。这些是“相对URL”,这意味着它们相对于包含这些文件的文档所在的位置。因此--如果您将此代码按原样放在URL/chat/index.html页面上,那么您对这两个js文件的引用实际上是在寻找“http://yourdomain.com/chat/firebase.js“和”http://yourdomain.com/chat/my.js"... 但是如果您没有将这些文件复制到/chat/目录,它们将显示为404错误(或未找到),脚本将无法工作。解决这两个实例的正确方法是使用“绝对URL”。通过在每个脚本引用中添加“/”将使其成为绝对引用,而不是“my.js”使其成为“/my.js”,因为浏览器将其视为绝对URL,从而推断“/”是域的根

不,我不是。我唯一使用的js就是上面提到的。我感谢所有读过这篇文章的人,但是我已经决定把我所有的页面移到一个index.html文件中。jQuery支持自动隐藏/显示标记,因此非常简单。而且上面的工作(如上所述,它在第一页时就已经工作了)。嗨,骗子,是的,这有点太晚了,因为我把所有的工作都转移到了一个单独的页面上。不,所有html文件都在根文件夹中(所有这些都只是一个小POC)。无论如何,谢谢你。
    $(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);
        }
    });
});