Я использую этот плагин jQuery в оттенках серого. Пример страницы, страница разработчика.
Теперь эффект работает только в Internet Explorer. У меня есть три изображения на этой странице. Первые два не отображаются в оттенках серого — я всегда вижу их в цвете (с эффектом наведения или без него). Третье изображение в градациях серого, но если я наведу на него указатель мыши, я увижу изображение в градациях серого второго изображения.
Вот как я создаю функцию greyScale:
<script type="text/javascript">
jQuery(function() {
// fade in the grayscaled images to avoid visual jump
jQuery("[class^='wp-image-'], [class*=' wp-image-']").hide().fadeIn(1000);
});
// user window.load to ensure images have been loaded
jQuery(window).load(function () {
jQuery("[class^='wp-image-'], [class*=' wp-image-']").greyScale({
// call the plugin with non-defult fadeTime (default: 400ms)
fadeTime: 500,
reverse: false
});
});
</script>
Это вывод второго изображения в Firebug:
<div class="gsWrapper" style="position: relative; display: inline-block;">
<img width="80" height="80" alt="" src="http://www.adomain.com/wp-content/uploads/2012/04/picture2.jpg" title="Picture" class="size-full wp-image-317 alignnone" style="display: inline;">
</div>
Это вывод третьего изображения в Firebug:
<div class="gsWrapper" style="position: relative; display: inline-block;">
<img width="80" height="80" alt="" src="http://www.adomain.com/wp-content/uploads/2012/04/picture3.jpg" title="Picture 3" class="alignnone size-full wp-image-320" style="display: inline;">
<canvas style="left: 0px; position: absolute; top: 0px;" width="80" height="80" class="gsCanvas"></canvas>
<canvas style="left: 0px; position: absolute; top: 0px;" width="80" height="80" class="gsCanvas"></canvas>
<canvas style="left: 0px; position: absolute; top: 0px; opacity: 1;" width="80" height="80" class="gsCanvas"></canvas>
</div>
Firebug не показывает мне На мой взгляд, эта функция работала, но теперь она кажется устаревшей. Что изменилось? Как я могу найти ошибку?
Я попытался загрузить сценарии в functions.php
с помощью wp_enque_script
, чтобы избежать конфликтов jQuery. Также я поместил свой код jQuery ниже wp_head()
в header.php
и изменил свои вызовы здесь с $
на jQuery
. В настоящее время я использую jQuery 1.7.2 (пробовал с 1.8.2 с тем же эффектом). Пробовал отключать все плагины, эффект тот же.
Теперь я сохранил страницу в Internet Explorer и открыл ее в Firefox. После этого страница работает. Кажется, это связано с рендерингом?
Изменить:
Так что плагин работает с canvas
в FF. Каждое изображение должно иметь canvas
image:
<div class="gsWrapper" style="position: relative; display: inline-block;">
<img width="80" height="80" alt="" src="http://www.adomain.com/wp-content/uploads/2012/04/image4.jpg" title="image4" class="alignnone size-full wp-image-1515" style="display: inline;">
<canvas style="left: 0px; position: absolute; top: 0px; opacity: 1;" width="80" height="80" class="gsCanvas"></canvas>
</div>
В моем случае только последнее изображение имеет поле холста (здесь последнее изображение имеет все поля холста!). Таким образом, код добавляется к неправильным элементам. Плагин имеет следующий JS-код:
this.each(function(index) {
$(this).wrap('<div class="gsWrapper">');
gsWrapper = $(this).parent();
// ...
Итак, сначала он оборачивает вокруг себя элемент, а затем снова обращается к нему. Возможно, ошибка в этих строках вместе с index
?