1

我有一个overrides.js脚本,它设置默认值在我的应用程序,像这样:如何通过Javascript AddEventListener检测mobileinit和自定义事件?

$(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.jsJquery加载后之前Jquery Mobile负载通过requireJS拉入。在我的网页我有这个片段在页脚:

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 

所以,我不能够检测mobileinit或添加我的自定义jqm-ready事件通过我的事件监听在页面上。

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

问:
有什么错在我的片段或者我为什么不能绑定到任何mobileinit或JQM准备这样吗?

回答

0

好的。我知道了......我认为我不能使用Jquery的trigger来为我添加听众使用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); 

作品。

0

你必须在事件名称的拼写错误,请参见:

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

这也许就是为什么你没有看到的事件。

+0

好的,谢谢。但它仍然不工作... – frequent

相关问题