встроенная ошибка JavaScript Firefox? - PullRequest
2 голосов
/ 09 мая 2011

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

<a href="javascript:document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none';">CLOSE</a>

Ответы [ 4 ]

6 голосов
/ 09 мая 2011

Попробуйте это

<a href="
    javascript:document.getElementById('light')
    .style.display='none';document.getElementById('fade')
    .style.display='none';return false;">CLOSE</a>

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

1 голос
/ 09 мая 2011
1 голос
/ 09 мая 2011

Назначения в JavaScript возвращают значение, которое было присвоено.Firefox оценивает весь ваш JavaScript и видит, что последнее, что произошло, было утверждение, которое возвратило 'none';затем он делает это местоположение окна, потому что это то, что должен делать атрибут href ссылки.(вроде как, в любом случае.)

Возможно, вы захотите использовать атрибут onclick тега привязки вместо href и добавить в конце «return false», чтобы действие по умолчанию для нажатия на ссылки- переход к href - не происходит.

<a onclick="document.getElementById('light').style.display='none';
            document.getElementById('fade').style.display='none';
            return false;">CLOSE</a>

Конечно, еще лучше было бы определить функцию для этого.=)

0 голосов
/ 29 августа 2012

Мой подход будет таким:

<a href="javascript:void(0);" onclick="document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none';" >CLOSE</a>

И работает довольно хорошо на большинстве веб-браузеров.

...