phonegap + jqm错误:“未捕获的SyntaxError:文件中的意外标识符:///android_asset/www/index.html:2”

时间:2012-03-06 09:21:06

标签: android jquery-mobile cordova

我正在努力学习使用Phonegap和JQM进行开发。我的应用程序非常简单:它加载一个jqm ajax调用的人员列表,如果点击一个人,它应该带你到另一个页面。

我试图以多种方式加载第二页:

1.-加入以下

     $.mobile.changePage($('myDiv'));

2.-加入以下

    $.mobile.changePage('myPage.html');

3.-在链接标签内使用正常的href

唯一有效的解决方案是最后一个解决方案。所以我真的想用JQM changePage来做,它允许我放一些过渡动画,当我按下链接我总是得到一个“

  

E / Web控制台(10922):未捕获的SyntaxError:意外的标识符   file:///android_asset/www/index.html:2“ERROR

任何想法?

编辑:我能够使用第三种方法(使用锚标记内的href)。经过一些测试后,我确信只有在我使用锚点中的​​onclick事件调用方法时才会出现错误。有人知道为什么会这样吗?

4 个答案:

答案 0 :(得分:1)

我在github上有一个示例项目,有两个页面可以帮助您解决问题。

https://github.com/dhavaln/phonegap-jqm

它包含使用脚本和直接链接更改页面的示例。

答案 1 :(得分:0)

$ .mobile.changePage不会将另一个html加载到视图中。它扫描你的链接你给的html中的html,获取它上面的第一个jqm'页面'并将其添加到dom(而不是整个html) 如果这不是您打算做的,并想将完整的something.html加载到dom中那么你将不得不使用

navigator.app.loadUrl("file:///android_asset/www/something.html")

windows.location.href("file:///android_asset/www/something.html")

答案 2 :(得分:0)

解决。只有当我使用“onclick”事件按脚本更改页面时才出现错误。通过使用jquery live函数并监听“click”事件,一切正常。我仍然没有找到onclick事件给我错误的原因,如果有人知道它会很高兴知道。感谢所有试图提供帮助的人。

对于想要代码的人:

创作时的HTML:

    <div id='listPage' data-role="page">

<div data-theme="e" data-role="header">
    <h1 >Anagrafica Tigre</h1>
</div><!-- /header -->

<ul id='anagList' data-theme="b" data-role="listview" data-inset="true" data-filter="true">

</ul>

<div id='schedaPage' data-role="page">
<div id='schedaTitle' data-theme="e" data-role="header">
    <h1>Anagrafica Tigre part 2</h1>
</div><!-- /header -->
<ul id='schedaList' data-theme="b" data-role="listview" data-inset="true">
    <li id='dataNascita'> 
        <h3><strong>Data di nascita</strong></h3>
        <p></p>
    </li>
    <li id='luogoNascita'>
        <h3><strong>Luogo di nascita</strong></h3>
        <p></p>
    </li>
    <li id='email'>
        <h3><strong>Email</strong></h3>
        <p></p>
    </li>

  

ws通话后的人口脚本:

    function appendToList(theId,data){
    var myList = $('#anagList');
    var newItem = document.createElement('li');

    var newId = document.createElement('input');
    newId.setAttribute("type","hidden");
    newId.value=theId;

    var newLink = document.createElement('a');
    //newLink.setAttribute("onclick","setPage("+newId+")"); //THIS IS THE EVENT THAT DIDNT WORK
    newLink.setAttribute("href","javascript:void(0)");
    newLink.setAttribute("id",theId)

    //newLink.setAttribute("href","schedaAnag.html");
    newLink.setAttribute("data-role","button");
    newLink.innerHTML=data;

    newItem.appendChild(newId);
    newItem.appendChild(newLink);

    myList.append(newItem);

    if(theId==149){
        $('#anagList').listview('refresh');
    }

}
为DID工作的点击监听器加载页面后的

脚本:

    $('#anagList a').live("click",(function(){
        var theId=$(this).attr('id');
        callWS(parseInt(theId),parseInt(theId)+1,'scheda');
        //$('#schedaPage').listview("refresh");
        $.mobile.changePage($('#schedaPage'));

    }));

答案 3 :(得分:0)

我的Phonegap + jqMobile应用程序也收到此错误消息,但原因完全不同。

我在javascript文件中动态加载,并将其声明为:     <script id="sqlPlugin" src="" type="text/javascript"></script>

Chrome没有对此发表评论,但在Android上它给了我标题中的错误消息。只需删除src=""属性即可解决问题。