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

相關問題