【问题标题】:Page specific scripts are not loading with jquery mobile页面特定的脚本未使用 jquery mobile 加载
【发布时间】:2012-05-27 11:54:33
【问题描述】:

我正在使用 jquery mobile 和 phonegap 创建一个 android 应用程序。我遵循了简短指南“Phonegap 编程的 20 个秘诀”,该指南建议使用从 index.html 上加载的自定义脚本到名为 onPageLoad() 的函数的回调,其中 Page 是目标页面的 html 文件的名称。

但是我被卡住了,因为我包含在 data-role="page" div 中的带有脚本标签的 javascript 没有加载。

https://stackoverflow.com/a/8838639/153382 指向说这应该可以工作的 jQuery 移动指南。我已经阅读了指南,它不起作用。现在呢?

jquery mobile 是否发生了一些变化,使其不再起作用?

更新 一些测试表明内联脚本运行,但我试图从文件加载的脚本没有评估 script src 属性。

也试过<script type="text/javascript">$.getScript("js/lookup.js");</script>。它也没有工作。

代码

common.js 在<div data-role="page">...</div> 之后包含在 index.html 中:

<script type="text/javascript" charset="utf-8" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/common.js"></script>

common.js相关内容:

function executeCallback() {
    if (isPhoneGapReady) {
        // get name of current html page
        var pages = currentUrl.split("/");
        var currentPage = pages[pages.length - 1].
            slice(0, pages[pages.length - 1].indexOf(".html"));

        // captalize the first letter and execute the function
        currentPage = currentPage.charAt(0).toUpperCase() +
            currentPage.slice(1);

        if (typeof window['on' + currentPage + 'Load'] ==
            typeof(Function)) {
            window['on' + currentPage + 'Load']();
        }
        alert('on' + currentPage + 'Load: ' + typeof window['on' + currentPage + 'Load']);
            // says onLookupLoad: undefined
    }
}

$(document).bind("pageload", function(event, data) {
    init(data.url);
});

window.onload = init;

init(url) 调用onDeviceReady(),后者调用executeCallback()

lookup.html 在&lt;div data-role="page"&gt; 中包含以下行:

<script type="text/javascript" charset="utf-8" src="js/lookup.js"></script>

【问题讨论】:

  • 我想我知道出了什么问题,但我需要看看你的脚本标签是什么样子的。贴一些代码。你也可以链接到“20个食谱”页面,这样我就可以看到你在说什么。
  • 当然,我在我的问题中添加了代码,这本书可以在这里找到:amazon.com/…
  • 哦,我还以为是博客页面什么的。
  • 是的,我有点后悔买家。我认为回调有效,只要 window[functionName] 是引用另一个脚本中定义的函数的正确方法。只是页面插入DOM后没有解析script标签。
  • 奇怪,当我加载网络服务器并使用 Ripple 移动环境编辑器(chrome 插件)时,它可以工作。只是不在安卓模拟器中。

标签: jquery-mobile cordova


【解决方案1】:

似乎问题在于 Eclipse 没有生成新的 apk。我猜这是因为 assets 目录发生了变化,但 src 目录没有。如果我删除 bin 文件夹中的 apk 并运行模拟器,我的代码将按设计工作。

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多