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, почему?

Спасибо!:)

1 ответ

Решение

Я заметил несколько проблем с вашим кодом

  1. Убедитесь, что первая строка кода <script src="mraid.js"></script>Скорее всего, это потому, что вы не вставили весь код в тег скрипта.
  2. Вторая проверка, если mraid все еще загружается, если так, тогда слушайте mraid "готовое" событие. А внутри обработчика обратного вызова read read добавляются другие списки или что-то еще, что вы хотите сделать.
  3. В-третьих, когда вы добавляете списки событий и используете определенные методы обратного вызова, но при удалении вы удаляете различные обработчики обратных вызовов, например, при добавлении, если вы добавляете этот списокmraid.addEventListener("orientationchange", Orientation);тогда при снятии позвоните mraid.removeEventListener("orientationchange", Orientation); и неmraid.removeEventListener("orientationchange", mraidIsReady);
  4. В-четвертых, вам не нужно называть обработчик ориентации ненужным при каждом изменении состояния, слушайте только изменение ориентации
  5. В-пятых, не все mraid жалобы поддерживают изменение ориентации SDK, если ваш Ad SDK не поддерживает это событие изменения, тогда прослушайте

    window.addEventListener('orientationchange', ориентация);

Вот код

<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();
Другие вопросы по тегам