Эффект всплывающих окон jQuery не работает в IE, но работает в других браузерах - PullRequest
0 голосов
/ 07 декабря 2011

У меня проблемы с эффектом jQuery в IE. Однако они правильно работают в Chrome, Firefox и Safari.

Я искал на форумах, но не могу найти проблему.

Веб-сайт http://www.voces.org.es

Функция, которая не работает в IE:

  1. Функция для всплывающих окон:

        $(document).ready(function() {
    //When you click on a link with class of poplight and the href starts with a #
    
    $('a.poplight[href^=#]').click(function() {
        var popID = $(this).attr('rel'); //Get Popup Name
        var popURL = $(this).attr('href'); //Get Popup href to define size
    
        //Pull Query & Variables from href URL
        var query= popURL.split('?');
        var dim= query[1].split('&');
        var popWidth = dim[0].split('=')[1]; //Gets the first query string value
    
        //Fade in the Popup and add close button
        $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) }).prepend('<a href="#" class="close"><img src="http://voces.org.es/wp-content/themes/voces/img/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>');
    
        //Define margin for center alignment (vertical   horizontal) - we add 80px to the height/width to accomodate for the padding  and border width defined in the css
        var popMargTop = ($('#' + popID).height() + 80) / 2;
        var popMargLeft = ($('#' + popID).width() + 80) / 2;
    
        //Apply Margin to Popup
        $('#' + popID).css({
            'margin-top' : -popMargTop,
            'margin-left' : -popMargLeft
        });
    
        //Fade in Background
        $('body').append('<div id="fade"></div>'); //Add the fade layer to bottom of the body tag.
        $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); //Fade in the fade layer - .css({'filter' : 'alpha(opacity=80)'}) is used to fix the IE Bug on fading transparencies
        return false;
    });
    
    //Close Popups and Fade Layer
    $('a.close, #fade').live('click', function() { //When clicking on the close or fade layer...
        $('#fade , .popup_block').fadeOut(function() {
            $('#fade, a.close').remove();  //fade them both out
        });
        return false;
    });
    

    });

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

1 Ответ

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

1) Прежде чем идти дальше, исправьте все ошибки проверки HTML . Я получаю некоторые ошибки консоли, связанные с ошибочными тегами.

Окружите любой JavaScript внутри <body> с помощью тегов //<![CDATA[ & //]]>, чтобы запретить HTML-проверке анализ вашего кода JS.

<script type="text/javascript" language="JavaScript">
    //<![CDATA[

        //  your jQuery/JavaScript

    //]]>
</script>

2) Убедитесь, что вы используете последнюю версию jQuery. Вы используете версию 1.4.1, которой более года. Сейчас до 1,7, и многое изменилось.

3) Цитировать комментарий OP: "Не работает в IE7 или IE8, но не пробовал в IE6." - Если возможно, забудьте о IE6 и сосредоточьтесь на IE9.

4) Если это все еще не работает, попробуйте плагин jQuery Lightbox (доказано, что он работает с IE) вместо модального всплывающего окна. FancyBox и prettyPhoto - хороший выбор.

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