#javascript #jquery #internet-explorer-8 #nivo-slider
#javascript #jquery #internet-explorer-8 #nivo-слайдер
Вопрос:
Я сталкиваюсь с некоторыми проблемами со слайдером jquery nivo на веб-сайте моей компании.
Прежде всего, веб-сайт размещен компанией, которая предоставила внутреннюю cms, в которой мы ничего не можем изменить. Вот почему у меня нет никаких разрешений на загрузку чего-либо в Head-Tag и я не могу загружать какие-либо файлы, кроме изображений, на этот сервер
Итак, я нашел Javascript, который впоследствии загружает CSS-файлы в head. Ну, все это работает правильно в любом браузере (Chrome, FF, IE6, IE9), кроме IE8. NivoSlider загружает только первое изображение, не показывает подписи, нет навигации.
Я понятия не имею, почему он это делает, потому что, если я выполняю код (показанный ниже) локально, он работает (все файлы тоже хранятся локально).
<script type="text/javascript" src="slider/scripts/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="slider/scripts/jquery.nivo.slider.js"></script>
<script type="text/javascript">
function loadjscssfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //if filename is an external CSS file
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref!="undefined") {
document.getElementsByTagName("head")[0].appendChild(fileref)
}
}
function toggle() {
var slider = document.getElementById("slider");
slider.style.display = "block";
}
$(window).load(
function() {
loadjscssfile("slider/css/nivo-default.css", "css");
loadjscssfile("slider/css/nivo-slider.css", "css");
toggle();
$('#slider').nivoSlider();
}
);
</script>
Хостер использует прототип JS Framework для своей CMS, поэтому я подумал, что, возможно, это вызывает какие-то помехи. На самом деле, если я открою Devtools в IE8, я покажу мне некоторые ошибки в Prototype.js файл, предоставленный Хостером
var nodes = $(element).getElementsByTagName('*');
className = ' ' className ' ';
for (var i = 0, child, cn; child = nodes[i]; i ) {
if (child.className amp;amp; (cn = ' ' child.className ' ') amp;amp; (cn.include(className) ||
(classNames amp;amp; classNames.all(function(name) {
return !name.toString().blank() amp;amp; cn.include(' ' name ' ');
}))))
elements.push(Element.extend(child));
}
Ему не нравятся эти строки, он говорит что-то вроде (в переводе с немецкого) «объект не поддерживает это значение или метод»
Вы можете увидеть исходную домашнюю страницу и код XXX и попробовать сами. Я надеюсь, что вы сможете помочь мне с моей проблемой.
Ответ №1:
Проверяя с помощью инструментов разработчика Chrome, единственная проблема, которую я вижу, заключается в следующем:
var nivo-child = $(this);
В имени переменной не может быть тире, измените его на nivo_child
или nivoChild
.
Чтобы исправить вторую ошибку, вам необходимо использовать jQuery.noConflict()
.
Комментарии:
1. извините, я настраивал. Я изменил его на дочернюю форму, потому что думал, что это вызвало помехи. Я оставлю это сейчас для вас, ребята.
2. ty, это исправило 2-ю ошибку, но все та же проблема в IE8
3. Вы неправильно используете
jQuery.noConflict()
. Более внимательно прочитайте документацию или найдите примеры в Google.4. большое тебе спасибо, чувак, ты сделал мой день. теперь он работает в IE-8. думаю, теперь я правильно понял синтаксис. нужно как можно скорее поработать над моим jquery.