Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 另一个IE错误:使用jquery地址或至少ajax时,第0行出现堆栈溢出_Javascript_Jquery_Ajax_Image Gallery - Fatal编程技术网

Javascript 另一个IE错误:使用jquery地址或至少ajax时,第0行出现堆栈溢出

Javascript 另一个IE错误:使用jquery地址或至少ajax时,第0行出现堆栈溢出,javascript,jquery,ajax,image-gallery,Javascript,Jquery,Ajax,Image Gallery,大家好,各位堆垛工, 我构建了一个ajax图像库,并使用asual的jquery地址进行深度链接。 加载库之后,在单击图像的第一次单击或所有缩略图的单击时,错误就会发生 基本上,我在图片上的代码是: <li id="thumbnail_<?php echo $row->position;?>"><a href="javascript:;" onclick="javascript:setAddress('<?php echo $row->url;?&

大家好,各位堆垛工, 我构建了一个ajax图像库,并使用asual的jquery地址进行深度链接。 加载库之后,在单击图像的第一次单击或所有缩略图的单击时,错误就会发生

基本上,我在图片上的代码是:

<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>

原始海报中的

好的,我找到了。我真的不知道为什么这会给IE带来如此大的麻烦,但事实是:

为了跟踪专辑标题,而不必在每次ajax调用中都获取它,我将其保存在一个不可见的文本输入中:

<input id="albumName" type="text" style="display:none;" value="<?php echo $album->name;?>"/>

去掉onclick事件中的javascript:。标签在那里是无用的。当页面加载时,在两个浏览器中都有一个404和一个Ajax调用。由于
checkAnchor()
是您的URL更改函数,因此似乎在IE中生成了一个错误,我猜
checkAnchor()
中的某些内容会导致
checkAnchor()
再次被调用,可能是在
reloadImage()
中,从而导致无限递归。最小化的代码太多了,我无法进一步浏览相关部分。这似乎是因为您试图显示尚未完全完成预加载的图像。如果在单击缩略图之前等待几秒钟,则不会出现此弹出窗口。另外-它是一个弹出窗口,一个显示“第0行堆栈溢出”的javascript警报-它不是javascript错误。您的一个javascript组件/ie插件正在捕获错误并显示警报。也许在你的js文件中搜索“警报”。@epascarello:我删除它是为了:
<script type="text/javascript">
    function setAddress(address){ 
        $.address.value(address.replace(/^#/, ''));
    }
</script>
<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"  
);
<input id="albumName" type="text" style="display:none;" value="<?php echo $album->name;?>"/>