我正在寻找一种方法来使用JQM并在加载第一页之前覆盖内容。
JQM初始化如此(来自最新的JQM代码):
( function( $, window, undefined ) {
var $html = $( "html" ),
$head = $( "head" ),
$window = $( window );
// trigger mobileinit event
$( window.document ).trigger( "mobileinit" );
...
$.extend($.mobile, {
// find and enhance the pages in the dom and transition to the first page.
initializePage: function() {
...
// alert listeners that the pagecontainer has been determined for binding
// to events triggered on it
$window.trigger( "pagecontainercreate" );
...
因此我可以使用两个事件: mobileinit 和 pagecontainercreate 。我知道HTML很容易这样:
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$( window ).bind( 'pagecontainercreate', function() {
console.log("HELLO");
});
</script>
<script type="text/javascript" src="jquery.mobile-1.1.0.multiview_con.js"></script>
<script type="text/javascript" src="plugin.js"></script>
但是如果我想从JACM之后的INSIDE plugin.js绑定到这些事件怎么办?如果我在plugin.js中放置相同的监听器,它永远不会触发。我想,因为为时已晚。但我需要阻止默认加载第一页,所以一旦JQM试图加载初始页面,对我来说就太晚了。
问题:
有没有办法在第一页加载从JQM之后的插件开始之前收听这些事件中的任何一个或任何其他事件?
修改:
我无法使用 pageinit ,因为它会在调用第一页后触发。 Dito用于 pageCreate ,它也不会从插件内部触发。
答案 0 :(得分:1)
确定。我用JQM autoinitialize
选项(see here)将其解决为假,如下所示:
$(document).bind("mobileinit", function(){
$.mobile.autoInitializePage = false;
});
这样Jquery Mobile就不会自动启动,只有当我手动调用它时才会启动:
if ( $.mobile.autoInitializePage == false){
$.mobile.initializePage();
}
我已将最后一个片段放在我的第二个插件中,需要在JQM触发第一个页面init之前完全设置。设置第二个插件后,我调用initializePage()
,一切运行正常。