#javascript #internet-explorer #firefox
#javascript #internet-explorer #firefox
Вопрос:
Я использую этот небольшой javascript «toolbox» от http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript
Пока мой код работает в Firefox и Chrome, но не в IE.
* РЕДАКТИРОВАТЬ* В Firefox тоже нет..
Я получаю ошибку недопустимого аргумента прямо там, где он вызывает функцию getCSSRule ‘toolbox’. http://d.pr/Ai5D и из DevTools http://d.pr/btFU
Вот код, о котором идет речь:
function myModal() {
if (window.location.href.indexOf("#fr") != -1) {
getCSSRule("#MB_content").style.backgroundImage = "url('/mailer/img/bgimg-fr.jpg') !important";
Modalbox.show('mailer/myModal-fr.html', {title: 'Nouveau', width: 1000}); return false;
} else {
Modalbox.show('mailer/myModal-en.html', {title: 'Sign-Up', width: 1000}); return false;
}
}
function thankYou() {
getCSSRule("#MB_content").style.backgroundImage = "none !important";
getCSSRule("#modalWrap").style.minHeight = "0 !important";
}
Вы можете посмотреть любые другие файлы здесь https://github.com/jwmann/Modal-Sign-up/tree/master/mailer
Ответ №1:
В документах для getCSSRule говорится, что он возвращает объект style. Вы ожидаете, что он вернет объект DOM.
Итак:
getCSSRule("#MB_content").style.backgroundImage = "url('/mailer/img/bgimg-fr.jpg') !important";
должно быть
getCSSRule("#MB_content").backgroundImage = "url('/mailer/img/bgimg-fr.jpg') !important";
Однако в документах также приводятся примеры использования, когда он возвращает объект DOM. Сбивает с толку!
Часть 2. Проведя немного больше тестирования, я обнаружил, что:
- если в документе нет тега стиля или внешней таблицы стилей, происходит сбой
- если в вашем объекте #MB_content не определены правила CSS, и вы используете getCSSRule, это приводит к вашей ошибке. В этом случае используйте addCSSRule.
Комментарии:
1. Вы правы. Я изменил это. Хотя, я все еще получаю тот же результат в IE. Происходит что-то странное. d.pr/btFU
2. На самом деле, это остановило его работу. Я думаю, что необходим ‘.style’
3. Кроме того, это также не работает в Firefox. Я думал, что у меня это тоже работает .. черт.