我有两个页面(index.html和second.html)使用JQM和Phonegap构建,我想知道为什么必须在index.html上定义所有js函数,尽管我想在second.html上使用它,
我的脚本如下(second.html):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Loan Calculator</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/themes/default/jquery.mobile-1.2.0.min.css" />
<link rel="stylesheet" href="css/themes/default/jquery.mobile.theme-1.2.0.css" />
<link rel="stylesheet" href="css/themes/default/override.css" />
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/cordova-2.1.0.js"></script>
<script type="text/javascript" charset="utf-8">
function test(){alert("hello agent!");}
</script>
</head>
<body>
<div data-role="page" id="agents">
<div data-role="header" data-position="fixed">
<div class="ui-title">Agents</div>
</div>
<div data-role="content">
<a href="#" onclick="test();">test</a>
</div>
<div data-role="footer" data-position="fixed">
<p></p>
</div>
</div>
</body>
</html>
在Eclipse中,当我尝试单击以触发该功能时,它显示消息如:
file:///android_asset/www/index.html: Line 1 : Uncaught ReferenceError: test is not defined
绝对无法在second.html页面上找到该功能。
除非我把它放在index.html中,否则js函数test()不起作用。
我不希望我的所有移动页面都在一页中加载。
您的建议非常感谢,谢谢。
答案 0 :(得分:0)
当您浏览使用jQuery Mobile
的移动网站时,其中包含的所有脚本
head
元素将仅在您开始的页面上读取。
因此,您从index.html
开始
页面,然后将运行该页面的head元素中的脚本。
如果您使用
一个按钮或导航栏移动到另一个页面,head元素中的脚本
这些页面将被忽略,因为只有title元素和div元素
包含data-role="page"
属性将被解析并带入DOM。
发生这种情况的原因是使用jqm
引入页面的Ajax
内置行为。
答案 1 :(得分:0)
如果你想为PhoneGap构建好的应用程序(以及那些有可能在AppStore中被接受的应用程序),你需要避免使用多个页面,这只会让你头疼。查看一个很好的JS模板解决方案,例如handlebars.js http://handlebarsjs.com/,并查看cconraets优秀的phonegap教程http://coenraets.org/blog/phonegap-tutorial/
在应用程序中重新加载页面实际上会破坏整个目的,而JQuery Mobile是一个野兽,而且对于表现不佳的移动设备来说几乎都很好。
答案 2 :(得分:0)
问这个问题已经有一段时间了。
但是,我有一个答案。
在second.html中放置<script src="Paging.js"></script>
,其中Paging.js将是您编写函数的文件(可以在onClick事件中调用),它将设置window.location.href =“http:\ ... \ index。 html“并将您重定向到index.html。
但请注意,它不是jQuery Mobile AJAX调用,它将再次刷新页面(从index.html下载js文件,设置元素......)。
Paging.js示例:
function GotoIndex()
{
window.location.href = "http:\\...\index.html";
}
second.html示例: ...
<a href="#" id="lnkSubmitChanges" onclick="GotoIndex()">Submit</a>
...
如果您问自己,但是如何获取/设置window.location.href的变量,您可以在index.html中使用localStorage.setItem('PreviousURL',window.location.href)并将其读作localStorage second.html中的.getItem('PreviousURL')。 然后Paging.js将是:
function GotoIndex()
{
window.location.href = localStorage.getItem('PreviousURL');
}