不寻常的Javascript图像标题错误
在网站上使用一些自制的(在谷歌的帮助下)javscript。它在Firefox、Safari、Chrome中显示得很好,但在InternetExplorer中当然不行。我没有在IE8中测试,只有IE7,但我需要让IE7的错误免费 基本上,我从Flickr抓取照片,并通过WordPress的FlickrRSS插件输出它们。我将在下面发布相关代码。我的问题是:悬停图像会为任何没有标题/标题的图像弹出(较大)图像。对于那些有标题的人,弹出的图像根本不会显示(但是这个错误只发生在IE7中)。我真的不确定这是JS还是CSS错误,因为我无法进入DOM查看IE7中发生了什么,因为元素只在:hover期间追加,然后在mouseout时删除。任何调试帮助。。。求你了 可以在这里看到该网站的实时版本:(向下滚动至视频下的照片缩略图) 下面是每个元素的HTML输出%tags表示插件的短代码:不寻常的Javascript图像标题错误,javascript,jquery,css,debugging,Javascript,Jquery,Css,Debugging,在网站上使用一些自制的(在谷歌的帮助下)javscript。它在Firefox、Safari、Chrome中显示得很好,但在InternetExplorer中当然不行。我没有在IE8中测试,只有IE7,但我需要让IE7的错误免费 基本上,我从Flickr抓取照片,并通过WordPress的FlickrRSS插件输出它们。我将在下面发布相关代码。我的问题是:悬停图像会为任何没有标题/标题的图像弹出(较大)图像。对于那些有标题的人,弹出的图像根本不会显示(但是这个错误只发生在IE7中)。我真的不确定
<div class="popup">
<a href="%image_medium%" class="preview" title="%title%"><img src="%image_square%" alt="%title%" /></a>
<img class="preload" style="display: none !important;" src="%image_medium%">
</div>
下面是弹出窗口的HTML(动态生成并附加到具有固定位置的body标记)
Img标题作为标题出现在这里
以下是相关的javascript/jquery代码:
//The overlay or pop-up effect
this.imagePreview = function(){
/* CONFIG */
xOffset = 40;
yOffset = 120;
// these 2 variable determine popup's distance from the cursor
// you might want to adjust to get the right result
/* END CONFIG */
$("a.preview").click(function(e){
return false;
});
$("a.preview").hover(function(e){
this.t = this.title;
this.title = "";
var c = (this.t != "") ? "<br/><span>" + this.t : "</span>";
$("body").append('<p id="preview"><img src="'+ this.href +'" alt="Image preview ... Loading" />'+ c +'</p>');
$("#preview")
.hide()
.css("top",(e.pageY - yOffset) + "px")
.css("left",(e.pageX + xOffset) + "px")
.fadeIn("2000");
},
function(){
this.title = this.t;
$("#preview").remove();
});
$("a.preview").mousemove(function(e){
var top = e.pageY - yOffset;
var left = e.pageX + xOffset;
//flips the image if it gets too close to the right side
while ((left + 500) > window.innerWidth){
left -= jQuery("#preview").outerWidth() + xOffset*2;
}
$("#preview")
.css("top",top + "px")
.css("left",left + "px");
});
//覆盖或弹出效果
this.imagePreview=函数(){
/*配置*/
xOffset=40;
yOffset=120;
//这两个变量确定弹出窗口与光标的距离
//您可能需要调整以获得正确的结果
/*结束配置*/
$(“a.preview”)。单击(函数(e){
返回false;
});
$(“a.preview”).hover(函数(e){
this.t=this.title;
this.title=“”;
var c=(this.t!=”)?“
”+this.t:”;
$(“body”).append(“”+c+”
”);
$(“预览”)
.hide()
.css(“顶部”(e.pageY-yOffset)+“px”)
.css(“左”(e.pageX+xOffset)+“px”)
.fadeIn(“2000”);
},
函数(){
this.title=this.t;
$(“#预览”).remove();
});
$(“a.preview”).mousemove(函数(e){
var top=e.pageY-yOffset;
var left=e.pageX+xOffset;
//如果图像太靠近右侧,则翻转图像
而((左+500)>窗内宽度){
左-=jQuery(“#preview”).outerWidth()+xOffset*2;
}
$(“预览”)
.css(“顶部”,顶部+“px”)
.css(“左”,左+“px”);
});
在以下三元组中:
var c = (this.t != "") ? "<br/><span>" + this.t : "</span>";
var c=(this.t!=”)?“
”+this.t:”;
您的意思是“如果有标题,请插入一个换行符,然后打开一个跨距并弹出标题。如果没有,请关闭一个跨距标记”
基本上,第一种情况为您提供了一个未关闭的跨度,第二种情况为您关闭了一个从未打开过的跨度
正如@Basiclife所说的,准确的诊断和正确的语法如下:
var c=(this.t!=)?“
”+this.t+:”;
+1为了得到正确的答案,但为了完整起见,我可以建议您在答案中添加正确的行吗?var c=(this.t!=)?“
”+this.t+:”
就是这样……我想我永远也找不到那个bug!非常感谢@kennis和@Basiclife,我根本不知道如何格式化它……谢谢!
var c = (this.t != "") ? "<br/><span>" + this.t : "</span>";