【发布时间】: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 在<div data-role="page"> 中包含以下行:
<script type="text/javascript" charset="utf-8" src="js/lookup.js"></script>
【问题讨论】:
-
我想我知道出了什么问题,但我需要看看你的脚本标签是什么样子的。贴一些代码。你也可以链接到“20个食谱”页面,这样我就可以看到你在说什么。
-
当然,我在我的问题中添加了代码,这本书可以在这里找到:amazon.com/…
-
哦,我还以为是博客页面什么的。
-
是的,我有点后悔买家。我认为回调有效,只要 window[functionName] 是引用另一个脚本中定义的函数的正确方法。只是页面插入DOM后没有解析script标签。
-
奇怪,当我加载网络服务器并使用 Ripple 移动环境编辑器(chrome 插件)时,它可以工作。只是不在安卓模拟器中。
标签: jquery-mobile cordova