另一个IE错误:堆栈溢出在第0行,而使用jquery地址或至少ajax
Another IE bug: stack overflow at line 0, while using jquery address or at least ajax
大家好,我建立了一个ajax图片库,并使用jquery地址进行深度链接。在加载图库后,在单击图像时的第一次onclick或所有缩略图的单击时发生错误。
基本上,我在图像上的代码是:<li id="thumbnail_<?php echo $row->position;?>"><a href="javascript:;" onclick="javascript:setAddress('<?php echo $row->url;?>');"><img src="<?php echo $row->filePath;?>" /></a></li>
我对缩略图的代码是:
<li id="thumbnail_<?php echo $row->position;?>"><a href="javascript:;" onclick="javascript:setAddress('<?php echo $row->url;?>');"><img src="<?php echo $row->filePath;?>" /></a></li>
这样当我点击时,我使用setAddress:
改变地址栏中的地址<script type="text/javascript">
function setAddress(address){
$.address.value(address.replace(/^#/, ''));
}
</script>
,然后我检测地址的变化,并在ajax中重新加载图像(以及相应的缩略图)。
<script type="text/javascript">
$.address.change(function(event) {
checkAnchor();
});
function checkAnchor(){
var albumId = <?php echo $albumId;?>;
if($.address.value() != '' && $.address.value() != '/'){
//get the id of the image
var arData = $.address.value().split("-");
var arIdExt = arData[1].split(".");
var id = arIdExt[0];
reloadImage(albumId,id,'0','curr');
}else{
reloadImage(albumId,id,'1','curr');
}
}
function reloadImage(albumId, photoId, position, action){
$("#imgLoading").show();
var visibleThumbnails = <?php echo $visibleThumbnails;?>;
var albumName = $("#albumName").val();
$.post('/montreal/inc/ajax/changeImage.php',{albumId:albumId, photoId:photoId, position:position, action:action}, function(data){
//data + photoposition=[url]
var arData = data.split("photoposition=");
if(position == 0){
position = jQuery.trim(arData[1]);
}
$("#photo-details").html(arData[0]);
$.address.title(albumName+" - Photo #"+position);
$("#imgLoading").hide();
//reload the thumbnails
if(action == 'next'){
var maxThumbnails = <?php echo count($album->arPhotos['photos']);?>;
var nextPosition = position+1;
var currentRow = Math.ceil(position/visibleThumbnails);
if(nextPosition > maxThumbnails){ nextPosition = 1;}
if(position%visibleThumbnails == 0 || position == maxThumbnails){
reloadThumbnails(currentRow,visibleThumbnails,albumId,nextPosition,'next');
}else{//fix the activeposition of the reloadThumbnails
reloadThumbnails(currentRow,visibleThumbnails,albumId,nextPosition,'curr');
}
}else if(action == 'curr'){
var maxThumbnails = <?php echo count($album->arPhotos['photos']);?>;
var currentRow = Math.ceil(position/visibleThumbnails);
reloadThumbnails(currentRow,visibleThumbnails,albumId,position,'curr');
}
},"html"
);
}"第0行堆栈溢出"出现在点击之后和setaddress之前,所以我很困惑它可能来自哪里。点击错误消息后,什么也没有发生,再次点击图像后,图库实际上工作了。但是如果我点击缩略图,错误就会出现,但是如果我再次点击缩略图,错误还是会出现。
据我所知,这个错误是通用的,通常是由循环或递归引起的。但是我看不到,特别是当我看到它只发生在画廊的第一次点击。
谁有提示,我应该在哪里搜索?
错误示例:http://www.ckoi.com/montreal/photos/gala-des-gemeaux-tapis-rouge-194/
编辑:经过一些测试,我意识到这个错误实际上是在我加载页面之后发生的。点击任何地方,都会出现堆栈溢出。所以我更困惑了…但也许是因为我第一次用ajax加载图库?我将调查
原海报:
好的,我找到了。我真的不确定为什么这会给IE带来这样的麻烦,但它是这样的:
为了跟踪专辑标题,并且不必在每次ajax调用中都获得它,我将它保存在一个不可见的文本输入中:
<input id="albumName" type="text" style="display:none;" value="<?php echo $album->name;?>"/>
如果标题在隐藏的输入中有双空格,IE会抱怨…对我来说,这毫无意义,但现在它工作了…
谢谢大家的真知灼见!希望这有助于其他人调试IE....
相关文章:
- 帐单地址与发货地址jQuery相同
- 使用JavaScript或JQuery验证电子邮件地址
- jQuery地址在回调中不起作用
- 从 jquery 地址选择器返回街道名称
- 我们如何使用 jQuery 通过 IP 地址获取国家/地区名称
- 使用 javascript/jquery 点击 DOM 元素后更改地址栏中的 URL
- jQuery 自动完成与谷歌地图地址查找
- 使用 google api 地址更新 jQuery jqgrid 列
- jQuery 表单验证,仅允许 .EDU 和 .edu.nn(其中 nn 是 2 位国家/地区代码)电子邮件地址
- 电子邮件地址的正则表达式,带有JQuery Vaildate的其他域
- jquery ajax 返回地址栏中的查询字符串
- jQuery+检查数组是否只包含 IP 地址
- 使用 jQuery 检查电子邮件地址数组
- 只添加一次具有Jquery地址的State
- 内部链接与jQuery地址
- jQuery地址不工作的刷新
- 另一个IE错误:堆栈溢出在第0行,而使用jquery地址或至少ajax
- 动态jquery地址使用搜索按钮
- JQuery地址标签的问题,锚标签不工作
- jQuery地址-内容加载