Проблема z-индекса подключаемого модуля jQuery - PullRequest
1 голос
/ 07 апреля 2010

Я использую подключаемый модуль jQuery для отображения видео из ленты Vimeo.

Единственная проблема - они отображаются поверх моего меню навигации. Я попытался установить z-индекс меню, но это не имеет значения.

Обычно предлагается установить параметр wmode на прозрачный или непрозрачный. Однако передача этого параметра в функцию oembed не имеет значения.

Спасибо

Ответы [ 3 ]

1 голос
/ 11 мая 2010

Вы можете использовать свою собственную функцию обратного вызова для обработки возвращенного кода, поэтому есть возможность изменить его перед вставкой.

Это что-то уродливое, но это работает, но я надеюсь, что кто-то может улучшить:

$(".oembed").oembed(null, null, function(container, oembed) {
        if (oembed == null)
            return; 
        if (oembed.type == "video" && oembed.code != null) {
            if (oembed.code.indexOf("wmode") < 0) {
                oembed.code = oembed.code.replace("<embed ", "<param name=\"wmode\" value=\"transparent\"></param>\n<embed ");
                oembed.code = oembed.code.replace("<embed ", "<embed wmode=\"transparent\"");                                        
            }
        }
        $.fn.oembed.insertCode(container, "replace", oembed);
    });

С уважением,

Ричард.

0 голосов
/ 07 февраля 2011

Привет, спасибо за обмен кодами.

Я добавил следующее прямо перед 'var code = -----;' в тело функции getVideo ... в jquery.oembed.js, и это работает. просто изменил переменные соответственно.

if (oembed.code.indexOf ("wmode") <0) { oembed.code = oembed.code.replace ("\ n } </p>

Это легко и просто.

Спасибо, Аюб

0 голосов
/ 30 мая 2010

У меня была такая же проблема, и это мое решение:

    var fixZindex = function(){

        $(".oembed").css('z-index','1').css('position','relative');
        $("object").css('z-index','1').css('position','relative');
        $("embed").css('z-index','1').css('position','relative');

        var elements = document.getElementsByTagName('embed');
        for(var i=0; i< elements.length; i++){

                elements[i].setAttribute("wmode","transparent");

                var para = document.createElement("param");
                para.setAttribute("name","wmode");
                para.setAttribute("value","transparent");

                elements[i].parentNode.appendChild(para)

        }

    }

    $(document).ready(function() {
        $(".oembed").oembed(null,
            {
            embedMethod: "append",
            maxWidth: 500
            });

        setTimeout('fixZindex()',1000);

    });

Я прошу прощения за смесь JS / JQuery. Я ни в коем случае не эксперт по jquery, так что если кто-то сможет перекодировать это решение в прямой jquery, это будет рад.

...