我有这段代码来解决闪存跳过z-index中所有内容的问题:
$("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+'&'+oldString);
}
else $(this).attr('src',ifr_source+'?'+wmode);
});
出于某种原因,我在indexOf上遇到错误,而且它正在打破网站。但奇怪的是,它并没有完全打破它,只有一个css调整大小我在那里修复。
未捕获的TypeError:无法调用未定义的方法'indexOf'
该网站位于:http://syndex.me
很想知道为什么会这样。
答案 0 :(得分:2)
直接从src
获取this
。您不需要为此创建一个完整的jQuery对象。
ifr_source = this.src;
作为奖励,this.src
返回空字符串,即使未设置属性src
,而jQuery的attr
返回undefined
,您必须先执行检查使用indexOf
。
答案 1 :(得分:1)
您可能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+'&'+oldString);
}
else
$(this).attr('src',ifr_source+'?'+wmode);
}