1

我有一个overrides.js脚本,它在我的应用程序中设置默认值,如下所示:

$(document).bind("mobileinit", function(){
    $.mobile.autoInitializePage = false;
    $.mobile.pushStateEnabled = false;
    $.mobile.defaultPageTransition = "fade";
    $('html').addClass('viewGrid');
    console.log("mobileinit detected in overrides");
    $(window).trigger('jqm-ready');
    });

在加载之后和加载之前将其overrides.js拉入。在我的页面上,页脚中有这个片段:requireJSJqueryJquery Mobile

console.log("page done loading");
window.addEventListener('jqm-ready', function(){
    console.log("detected jqm-ready")
    // run some code
    });

document.addEventListener('mobilelinit', function(){
    console.log("mobilelinit detected from page");
    // run some code
    });

我的控制台显示以下内容:

page done loading
mobileinit detected in overrides

因此,我无法通过在页面上添加的 eventListener检测到mobileinit我的自定义事件。jqm-ready

当我使用requireJS时,我无法使用 Jquery 来检测mobileinit/jqm-ready,因为页面在 Jquery 加载之前被解析。我希望能够检测到任何一个事件,但到目前为止还没有运气。我需要检测它们,因为我需要运行的代码需要绑定到 Jquery Mobile 事件。

问题:
我的代码片段有什么问题,或者为什么我不能像这样绑定到 mobileinit 或 jqm-ready?

4

2 回答 2

0

您的活动名称有错字,请参阅:

document.addEventListener('mobilelinit', function(){
                                 ^----- TYPO HERE (should be mobileinit)

这可能就是您没有看到该事件的原因。

于 2012-11-10T17:10:48.737 回答
0

行。我明白了...我想我不能将 Jquerytrigger用于添加侦听器的事件addEventListener。但也许不是。无论如何,这有效:

var trigAnalytics = function( trigger ){ 
    console.log("triggered by "+trigger);
    };
document.addEventListener("jqm_ready",function(){console.log("jqm_ready"); trigAnalytics("jqm_ready");},false);

而在overrides.js

console.log("Hello now");
var evt = document.createEvent("Event");

evt.initEvent("jqm_ready",true,true);
document.dispatchEvent(evt);

作品。

于 2012-11-10T18:30:01.300 回答