Несовместимость звука - чрезвычайно загадочный - PullRequest
0 голосов
/ 25 декабря 2011

Итак, у меня есть сайт, который эмулирует флэш-сайт с jquery и html 5.

Звук настроен на воспроизведение, когда вы наводите курсор мыши на пункты меню или открываете различные меню - он работает нормальнов IE 9 (звук не поддерживается в 8 или ниже) и Chrome, но НЕ FF.

Теперь вот загадочная часть: он также отлично работает в FF на моем рабочем столе или на моем тестовом сервере, просто НЕ включенсервер, на котором он должен работать.

Кто-нибудь может понять, что здесь происходит?

Сайт здесь для справки.Посмотрите на это в IE9 или Chrome, затем в FF, чтобы понять, что я имею в виду.Вы можете перейти здесь для моего тестового сервера, на котором он работает везде.Файлы идентичны.

РЕДАКТИРОВАТЬ

В соответствии с запросом, вот способ, которым я настроил вещи (полный код доступен, перейдя по предыдущим ссылкам и нажавПросмотреть исходный код)

<audio id="open2" preload="auto"><source src="support/media/open2.mp3"></source><source src="support/media/open2.ogg"></source></audio>

Позже ... Я добавляю следующий код к элементу с последним классом целое число, соответствующее идентификатору аудиоэлемента ... хотя не зацикливайтесь на этомкак это явно работает в других браузерах.Я также делаю некоторое обнаружение браузера, поскольку попытка воспроизвести аудио приведет к УНИЧТОЖЕНИЮ страницы в IE 8 и ниже.

document.getElementById('open'+$(this).attr('class').substr($(this).attr('class').length-1)).play();

1 Ответ

0 голосов
/ 25 декабря 2011

sdo, ваши файлы не совпадают.Я взял источник с вашего сайта (lounge) и с вашего тестового сайта (blueclick.ca) и сравнил их.Хотя HTML-различий довольно много, я чувствую, что следующая проблема JS - ваша проблема.Как видите, код другой.Может быть, правильный код, отсутствующий на вашем сайте, является причиной проблемы.Также возможно, что ваш сервер обслуживает кэшированную версию страницы.Проверьте это, и это может помочь.

Код с вашего рабочего сайта:

$("#navigation li").click(function() {

        if (!currOpen){
            if (!(BrowserDetect.browser == "Explorer" && BrowserDetect.version < 9))
                document.getElementById('open'+$(this).attr('class').substr($(this).attr('class').length-1)).play();    
                customToggle($(this));
                currOpen = getId($(this));
        } else if (getId($(this)) == currOpen) {
                $("#"+currOpen).slideToggle('slow');
                currOpen = 0;
        } else {
                $("#"+currOpen).slideToggle('slow');
            if (!(BrowserDetect.browser == "Explorer" && BrowserDetect.version < 9))
                document.getElementById('open'+$(this).attr('class').substr($(this).attr('class').length-1)).play();    
                customToggle($(this));
                currOpen = getId($(this));
        }

        function customToggle(obj){
            $("#"+getId(obj)).slideToggle('slow');
        }

        function getId(obj){ return obj.attr('id').substr(4) }

    });

Код с вашего неработающего сайта:

$("#navigation li").click(function() {

        if (!currOpen){
                if (BrowserDetect.browser == "Explorer" && BrowserDetect.version < 9){
                 // do something else 
            } else {
                document.getElementById('open'+$(this).attr('class').substr($(this).attr('class').length-1)).play();
            }               document.getElementById('open'+$(this).attr('class').substr($(this).attr('class').length-1)).play();    
                customToggle($(this));
                currOpen = getId($(this));
        } else if (getId($(this)) == currOpen) {
                $("#"+currOpen).slideToggle('slow');
                currOpen = 0;
        } else {
                $("#"+currOpen).slideToggle('slow');
            if (BrowserDetect.browser == "Explorer" && BrowserDetect.version < 9){
                 // do something else 
            } else {
                document.getElementById('open'+$(this).attr('class').substr($(this).attr('class').length-1)).play();
            }
                customToggle($(this));
                currOpen = getId($(this));
        }

        function customToggle(obj){
            $("#"+getId(obj)).slideToggle('slow');
        }

        function getId(obj){ return obj.attr('id').substr(4) }

    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...