#jquery
#jquery
Вопрос:
У меня есть этот код, чтобы устранить проблему перехода во флэш-память по всему вашему содержимому в z-индексе:
$("iframe").each(function(){
var ifr_source = $(this).attr('src');
var wmode = "wmode=opaque";
if(ifr_source.indexOf('?') != -1) {
var getQString = ifr_source.split('?');
var oldString = getQString[1];
var newString = getQString[0];
$(this).attr('src',newString '?' wmode 'amp;' oldString);
}
else $(this).attr('src',ifr_source '?' wmode);
});
По какой-то причине я получаю ошибки в indexOf, и это нарушает работу сайта. Но, как ни странно, это не нарушает его полностью, у меня есть только одно исправление изменения размера css.
Ошибка неперехваченного типа: не удается вызвать метод ‘indexOf’ неопределенного
Сайт находится здесь: http://syndex.me
Хотелось бы знать, почему это происходит.
Ответ №1:
Получить src
непосредственно из this
. Для этого вам не нужно создавать целый объект jQuery.
ifr_source = this.src;
В качестве бонуса this.src
возвращает пустую строку, даже если атрибут src
не задан, тогда attr
как возвращает jQuery undefined
, и вы должны выполнить проверку перед использованием indexOf
.
Ответ №2:
Вероятно iframe
, у вас вообще нет никакого src
объявленного атрибута.
Имейте это, чтобы избежать ошибки:
var ifr_source = $(this).attr('src') || "";
Редактировать: просмотр источника здесь действительно так:
<iframe id="likeit"></iframe>
С другой стороны, добавление к URL-адресу этого фрейма не будет хорошей идеей, лучше просто оставить его в покое, поэтому окончательный код должен быть:
var ifr_source = $(this).attr('src') || "";
if (ifr_source.length > 0) {
var wmode = "wmode=opaque";
if(ifr_source.indexOf('?') != -1) {
var getQString = ifr_source.split('?');
var oldString = getQString[1];
var newString = getQString[0];
$(this).attr('src',newString '?' wmode 'amp;' oldString);
}
else
$(this).attr('src',ifr_source '?' wmode);
}
Комментарии:
1. Это странно, хотя, потому что тогда желаемый эффект, добавление ?wmode=opaque не происходит. Однако это останавливает ошибку.
2. Если вы добавите его, вы вызовете бесконечный цикл, поскольку iframe будет ссылаться на ту же страницу.
3. Извините, я не понимаю, моя цель — проверить, есть ли в iframe src вопросительный знак, если это так, я могу прикрепить параметр к этой строке (что остановит проблему с z-индексом флэш-видео YouTube. Я не понимаю, почему после ваших проверок, предложенных в новом коде, что это вызовет бесконечный цикл, разве это не противоречит смыслу кода? Спасибо за ваше время и терпение.
4. Весь мой смысл в том, чтобы игнорировать
iframe
без источника — он должен работать просто отлично (как и раньше) с фреймами, указывающими куда-то.