Как получить путь до файла из css в firefox?
<style>
background:url(images/temp0.png); </style> <div class="myDiv">1</div> $(document).ready(function(){ $('div').each(function(){ alert($(this).css('backgroundImage')) }) }) Если путь до картинки правильный, то все норм, но если путь не правильный в ff показывает 'none', в то время как все остальные браузеры отображают именно то, что прописано в css. Кто-нибудь знает как заставить отображать в ff путь до картинки, даже если он не правильный? |
Попробовал по всякому.
Нифига.Все способы выдают none, либо пустую строку Исключительно ради академического интереса, родилось решение которое я приведу ниже. Предупреждение!!! Его НИ В КОЕМ СЛУЧАЕ нельзя использовать, и оно написано только ради лулзов. Оно ОЧЕНЬ медленное. Потому что заключается в том, что для каждого дива проверяются ВСЕ CSS-правила, объявленные в подключаемых CSS-файлах, тегах STYLE, и импортируемых стилях А это очень много правил на обычном сайте, так что это очень неоптимизированная операция. К тому же данная функция возвращает массив всех фонов, ко торые подходят для данного элемента, и не делается проверки, кто из них более приоритетен. Итак, JUST FOR LULZ <style> @import url("http://fonts.googleapis.com/css?family=Gorditas"); div { background:url(asdasdas.png); } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> $(document).ready(function(){ $('div').each(function(){ var backgrounds = checkCss(document.styleSheets, this); console.log(backgrounds); }) }) function checkCss(sheets, element) { var result = []; $(sheets).each(function(i, el) { try { $(el.cssRules).each(function(j, el2){ if(el2.styleSheet) {//Импортированные стили result.concat(checkCss([el2.styleSheet])); } else { if($(element).is(el2.selectorText)) { result.push(el2.style.backgroundImage); } } }); } catch(e) { console.log('security error', el, e); } }); return result; } </script> <div> qwe </div> |
Gvozd, что я делаю не так ?
<style> div { background:url(asdasdas.png); } </style> <div></div> <script> var div = document.getElementsByTagName('div')[0]; var computed = window.getComputedStyle(div, null); var val = computed.getPropertyValue("background-image"); document.write(val); </script> |
Цитата:
Как оказалось, именно при запуске с файловой системы FireFox и ведет себя пакостно. wild_snail, ну, вы слышали, собственно - тестируйте JS из-под веб-сервера, а не из файловой системы. Браузеры в связи со своими правилами безопасности ведут себя из файловой системы не так же, как из-под веб-сервера. <style> div{ background:url(images/temp0.png); } </style> <div class="myDiv">1</div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> $(document).ready(function(){ $('div').each(function(){ alert($(this).css('backgroundImage')) }) }) </script> |
Спасибо, очень помогли!
|
Часовой пояс GMT +3, время: 12:56. |