2015-09-16 23 views
0

嘿,我有點晚了,但我有一些問題,我的代碼..的addEventListener MRAID

function Orientation() 
{ 


if ((window.orientation == 0) || (window.orientation == 180))//portrait 
    { 

     Paysage.style.visibility = "hidden"; 
     Portrait.style.visibility = "visible"; 
     mraid.removeEventListener("stateChange", mraidIsReady); 
     mraid.removeEventListener("orientationchange", mraidIsReady); 
     mraid.addEventListener("orientationchange", Orientation); 
     mraid.addEventListener("stateChange", Orientation); 
     //var video = document.getElementById("video"); 
     //video.pause(); 

    } 
if ((window.orientation == 90) || (window.orientation == -90))//paysages 
    { 
     Portrait.style.visibility = "hidden"; 
     Paysage.style.visibility = "visible"; 
     mraid.removeEventListener("stateChange", mraidIsReady); 
     mraid.removeEventListener("orientationchange", mraidIsReady); 
     mraid.addEventListener("orientationchange", Orientation); 
     mraid.addEventListener("stateChange", Orientation); 
     //var video = document.getElementById("video"); 
     //video.play(); 
    //overlayObj.style.visibility = ""; 
    //var video = document.getElementById("video"); 
    //video.play(); 
    } 
} 

function doReadyCheck() 
{ 
    if (mraid.getState() == 'loading') 
    { 
     mraid.addEventListener("orientationchange", Orientation); 
     mraid.addEventListener("stateChange", Orientation); 
    } 
    else 
    { 
     mraid.addEventListener("orientationchange", Orientation); 
     mraid.addEventListener("stateChange", Orientation);   
    } 
} 
doReadyCheck(); 
</script> 

我EvetListener總是同時裝載工作,但之後它不會工作了......

順便說一下,我有一個代碼工作在IOS來阻止風景的方向,但它不工作在Android爲什麼?

謝謝! :)

回答

0

我注意到你的代碼的幾個問題

  1. 確保您的第一行代碼是<script src="mraid.js"></script>,最有可能是因爲你還沒有粘貼腳本標籤內的整個代碼。
  2. 第二次檢查mraid是否還在加載,如果是,請聽mraid「ready」事件。並在裏面讀取事件回調處理程序添加其他 listners或任何你想做的mraid有關。
  3. 第三次添加事件列表程序並使用某些回調方法,但是在刪除不同的回調處理程序時,例如刪除不同的 回調處理程序。而如果添加此聽者加入 mraid.addEventListener("orientationchange", Orientation);然後同時 刪除你要給 mraid.removeEventListener("orientationchange", Orientation);而不是mraid.removeEventListener("orientationchange", mraidIsReady);
  4. 第四,你不需要調用定位處理非必要在每一個狀態變化,只聽orientationchange
  5. 五,如果您的廣告SDK不支持該更改事件,則不是所有mraid投訴SDK的支持orientationchange,然後收聽

    window.addEventListener('orientationchange',Orientation);

下面是代碼

<script src="mraid.js"></script> 
function Orientation() 
{ 


    if ((window.orientation == 0) || (window.orientation == 180))//portrait 
    { 

     Paysage.style.visibility = "hidden"; 
     Portrait.style.visibility = "visible"; 


    } 
    if ((window.orientation == 90) || (window.orientation == -90))//paysages 
    { 
     Portrait.style.visibility = "hidden"; 
     Paysage.style.visibility = "visible";   
    } 
} 

function doReadyCheck() 
{ 
    if (mraid.getState() == 'loading') 
    { 
     //Mraid is still loading so listen to ready state change 
     mraid.addEventListener("ready", mraidIsReady); 

    } 
    else 
    { 
     //Mraid is already ready so do your mraid related stuff here 

     //orientationchange event will only be added in case your SDK supports orientationchange otherwise add 
     //window.addEventListener("orientationchange", Orientation); 
     mraid.addEventListener("orientationchange", Orientation); 
     //This is not needed,why do you need to listen to stateChange as well, but its upto you if you want to do that 
     //mraid.addEventListener("stateChange", Orientation); 
    } 
} 
/** 
* Mraid is ready, so add your mraid related code here 
*/ 
function mraidIsReady(){ 
    //Remove the ready listener 
    mraid.removeEventListener("ready", mraidIsReady); 

    //Now add mraid related listeners 
    //orientationchange even will only be added in case your SDK supports orientationchange otherwise add  //window.addEventListener("orientationchange", Orientation); 
    mraid.addEventListener("orientationchange", Orientation); 

    //I don't know if you really need to do that this is un-necessary, so every stateChange will trigger orientation check 
    //mraid.addEventListener("stateChange", Orientation); 
} 
doReadyCheck();