JQuery.show() не работает в firefox

У меня проблема с функцией show jquery в firefox.

Ситуация: Я загрузил iframe с aspx-страницей во всплывающем окне (fancybox). На этой странице aspx у меня есть кнопка с событием onclick, которое вызывает пользовательскую функцию, и в этой функции она запускает функцию .show() в div. Этот div имеет элемент стиля, который содержит: display: none;.

Это работает в IE, сафари, хром. Это даже работает в firefox, когда я загружаю страницу aspx отдельно. Он не работает в firefox в всплывающем окне fancybox-iframe. Я не вижу ошибок JavaScript. Даже дисплей: ни один не удаляется из атрибута style, но div не отображается.

html со страницы

<div class="popupWrapper">
  ..some elements
  <div id="psharebutton" style="display:none;"> 
   ..content of the div
  </div>
</div>

Код javascript:

function dolinkedin(url, title, summary, source) {
        $(".smbutton").addClass("buttonDisabled");
        $("#linklinkedin").removeClass("buttonDisabled");
        $("#psharebutton").show();

        parent.sizeFancybox();
    }

Кнопка, в которой запускается всплывающее окно, является якорем, который имеет класс fancyboxframe. Fancybox автоматически генерирует js-код для отображения всплывающего окна.

Я проверил эти темы:

Я проверил, действительно ли мой html и он есть.

Любая идея?

BHD

Ответ 1

У меня была аналогичная проблема, и я решил сделать

$("#psharebutton").css("display", "inline-block");

вместо

$("#psharebutton").show();

JQuery "show" идентичен настройке атрибута стиля отображения "block". Я обнаружил, что мне нужен "встроенный блок" для firefox и chrome (мне это не нужно для IE). Я считаю (но не подтвердил), что jquery достаточно умен, чтобы узнать, что такое предыдущее отображаемое значение, и использовать его, но в моем случае я начал с отображения, установленного на "none", поэтому прежнего значения не было.

Ответ 2

Просто напишите как $( "# psharebutton" ). attr ('display', '') или $( "# psharebutton" ). attr ('display', 'block').

function dolinkedin(url, title, summary, source) {
        $(".smbutton").addClass("buttonDisabled");
        $("#linklinkedin").removeClass("buttonDisabled");
        $("#psharebutton").attr('display','');

        parent.sizeFancybox();
    }

Ответ 3

У меня была аналогичная проблема. Я сделал это в моем css:

body { display: none }

и попытался изменить это в jQuery:

$("body").show();

который не работал в Firefox.

После того, как я изменил HTML на

<body style="display: none">

и удалив часть из CSS, я смог использовать jQuery show(); безупречна

Кажется, что наследование правил css не соответствует той же самой процедуре в Firefox, что и в IE/Chrome.

Ответ 4

Это может быть только побочный эффект ошибки js. Всегда стоит нажать F12 и увидеть, есть ли какие-либо ошибки js в консоли. У меня была аналогичная проблема, когда я не мог понять, почему .show() не работал над входом, который имел стиль "display: none" в Firefox, и оказалось, что у меня был плохо сформированный селектор, который отсутствовал закрытие] и выбросил ошибку, которую вы не видите, пока не откроете Firebug. Chrome был более терпимым, показал кнопку, в то время как Firefox поймал плохой селектор.