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 ответ
Решение
Я заметил несколько проблем с вашим кодом
- Убедитесь, что первая строка кода
<script src="mraid.js"></script>
Скорее всего, это потому, что вы не вставили весь код в тег скрипта. - Вторая проверка, если mraid все еще загружается, если так, тогда слушайте mraid "готовое" событие. А внутри обработчика обратного вызова read read добавляются другие списки или что-то еще, что вы хотите сделать.
- В-третьих, когда вы добавляете списки событий и используете определенные методы обратного вызова, но при удалении вы удаляете различные обработчики обратных вызовов, например, при добавлении, если вы добавляете этот список
mraid.addEventListener("orientationchange", Orientation);
тогда при снятии позвонитеmraid.removeEventListener("orientationchange", Orientation);
и неmraid.removeEventListener("orientationchange", mraidIsReady);
- В-четвертых, вам не нужно называть обработчик ориентации ненужным при каждом изменении состояния, слушайте только изменение ориентации
В-пятых, не все 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();