我已经使用$ .mobile.changepage在我的phonegap+jquerymobile项目中进行了重定向。但是,令我感到困惑的是,我需要将所有页面的脚本放在同一文件index.html中。否则,重定向页面将无法在其标题中执行该功能。
例如,我的index.html似乎是$(document).bind("deviceready",function(){$.mobile.changepage("test.html");})
然后,我的设备将重定向到似乎是
$("#btnTest").click(function(){alert("123");})
<button id="btnTest">Test</button>
但是,该脚本将永远不会在test.html中执行。然后,将脚本放入index.html,完成我期望的工作。无论如何,如果我将所有脚本放在同一页上,则项目将变得越来越难以保存。感谢您的帮助。
要了解这种情况,您需要了解jQuery Mobile的工作方式。它使用ajax加载其他页面。
第一页正常加载。将其 HEAD
和BODY
加载到中DOM
,它们在那里等待其他内容。加载第二页时,仅将其
BODY
内容加载到中 DOM
。更确切地说,甚至 BODY
没有完全加载。仅会加载具有data-role =“page”属性的first div,其他所有内容都将被丢弃。即使您里面有更多页面,也 BODY
只会加载第一个页面。该规则仅适用于后续页面,如果初始 HTML中 有更多页面,则将全部加载。
这就是为什么您的按钮显示成功但单击事件不起作用的原因。同一点击事件,其父项 HEAD
在页面过渡期间被忽略。
不幸的是,您将无法在他们的文档中找到它。以太他们认为这是一个常识,或者他们忘记像我的其他主题一样描述它。(jQueryMobile文档很大,但是缺少很多东西)。
在您的第二页以及所有其他页面中,将 SCRIPT
标签移动到 BODY
内容中,如下所示:
<body>
<div data-role="page">
// And rest of your HTML content
<script>
// Your javascript will go here
</script>
</div>
</body>
这是一种快速的解决方案,但仍然很丑陋。
工作示例可以在我的其他答案中找到:
更改页面后未触发页面显示
另一个工作示例:用jQuery移动转换以不同方式加载页面
将所有JavaScript移至原始的第一个HTML。收集所有内容并将其放入单个js文件中,放入 HEAD
。在加载jQueryMobile之后对其进行初始化。
<head>
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script src="index.js"></script> // Put your code into a new file
</head>
最后,我将描述为什么这是一个好的解决方案的一部分。
在按钮中使用 rel =“ external”,然后使用要更改页面的每个元素。因此,不会将ajax用于页面加载,并且jQueryMobile应用程序的行为将与普通的Web应用程序类似。不幸的是,在您的情况下,这不是一个好的解决方案。Phonegap永远不能作为普通的Web应用程序使用。
<a href="#second" class="ui-btn-right" rel="external">Next</a>
官方文档,请参阅以下章节:
不使用Ajax进行链接
现实的解决方案将使用 解决方案2 。但是与解决方案2不同,我将使用相同的index.js文件,并在 HEAD
每个其他可能的页面中对其进行初始化。
现在您可以问我 为什么 ?
Phonegap
像jQueryMobile一样有问题,迟早会有一个错误,如果每个js内容都在一个HTML文件中,则您的应用程序将失败(包括加载的DOM)。可以删除DOM,Phonegap
并刷新您的当前页面。如果该页面没有javascript,则在重新启动之前它将无法正常工作。
null 然后,我遇到找不到指定的过程。 但是,如果我将放入中,那么可以说。很好用。 但是我不想污染JDK文件夹。我记得windows会搜索%Path%来定位依赖的DLL。为什么在此问题中我不能使用%path%? 用户变量 系统变量 我只是无意间发现: > 如果将DLL的文件夹放到用户%path%中,则找不到该文件夹。 但是我编写了另一个Windows应用程序,它有类似的DLL依赖关系来证实我的猜
我已经使用$.mobile.changepage在我的phonegap jquerymobile项目中进行重定向。然而,让我困惑的是,我需要将所有页面的脚本放在同一个文件中index.html.否则,重定向页面无法执行其标头中的功能。 例如,我的index.html似乎是 然后,我的设备将重定向到测试。html,似乎是 然而,脚本永远不会在test.html.执行然后我把脚本index.html,
问题内容: 我的Java应用程序依赖于DLL,而该DLL 进一步 依赖于。 我试过了: 将放置在文件夹中 并将文件夹放在%PATH% 然后,我遇到了从Eclipse启动应用程序时的问题。 但是如果我把它放进去了,就说。它工作正常。 但是我不想污染JDK文件夹。我记得Windows会搜索%PATH%来找到依赖的DLL。为什么在此问题中不能使用%PATH%? 更新1 Windows中有2个不同的%PA
好的。我正在引导一个简单的应用程序。我使用的是flow.js。我使用的预置是babel-preset-2015、babel-preset-react和Babel-Preset-Stage-0。我必须在我的。Babelrc和WebPack.config中放置相同的预置,以便所有这些预置都能工作。例如,如果我从WebPack.config中移动它们,我会得到一个错误'React is not defi
我知道不同的平台有不同的UI需求,但为什么我必须下载源代码并自己编译它呢?为什么我不能为我的平台下载一个可运行的版本?
问题内容: 有时,当我重写方法时,在第一次调用时会出现异常,如下所示: 为什么我们被迫打电话?父类有义务是有意义的,但是更重要的是,我们如何知道需要调用一个方法,而不是等待它崩溃? 问题答案: 为什么我们被迫调用super.method()? 组成Android SDK的类非常复杂。例如,活动和片段都必须执行许多操作才能正常运行(即管理生命周期,优化内存使用,在屏幕上绘制布局等)。要求客户端调用基