не загружается JS
Народ, добрый вечер! подскажите как решить проблему, есть JS:
(function($){ $.fn.extend({ beforeAfter: function(options) { var defaults = { animateIntro : false, introDelay : 1000, introDuration : 1000, showFullLinks : true, imagePath : '/before-after/images/', sliderText: 'Drag me left or right to see the before and after images', linkBeforeText: 'Before', linkAfterText: 'After' }; var options = $.extend(defaults, options); var randID = Math.round(Math.random()*100000000); return this.each(function() { var o=options; var obj = $(this); var imgWidth = $('img:first', obj).width(); var imgHeight = $('img:first', obj).height(); $(obj) .width(imgWidth) .height(imgHeight) .css({'overflow':'hidden','position':'relative','padding':'0'}); var bef = $('img:first', obj).attr('src'); var aft = $('img:last', obj).attr('src'); $('img:first', obj).attr('id','beforeimage'+randID); $('img:last', obj).attr('id','afterimage'+randID); $('img',obj).remove(); // jQuery 1.4.3 and the current webkit browsers don't play nice with dragging. By removing the images and using them as div background we work around this $('div', obj).css('float','left'); // Float all divs within the container left // Create an inner div wrapper (dragwrapper) to hold the images. $(obj).prepend('<div id="dragwrapper'+randID+'"><div id="drag'+randID+'"><img width="8" height="56" alt="handle" src="'+o.imagePath+'handle.gif" title="'+o.sliderText+'" id="handle'+randID+'" /></div></div>'); // Create drag handle $('#dragwrapper'+randID).css({'position':'absolute','padding':'0','left':(imgWidth/2)-($('#handle'+randID).width()/2)+'px','z-index':'20'}).width($('#handle'+randID).width()).height(imgHeight); $('#dragwrapper'+randID).css({'opacity':.25}); // Sets the dragwrapper and contents to .25 opacity $('div:eq(2)', obj).height(imgHeight).width(imgWidth/2).css({'background-image':'url('+bef+')','position':'absolute','overflow':'hidden','left':'0px','z-index':'10'}); // Set CSS properties of the before image div $('div:eq(3)', obj).height(imgHeight).width(imgWidth).css({'background-image':'url('+aft+')','position':'absolute','overflow':'hidden','right':'0px'}); // Set CSS properties of the after image div $('#drag'+randID).width(2).height(imgHeight).css({'background':'#888','position':'absolute','left':'3px'}); // Set drag handle CSS properties $('#beforeimage'+randID).css({'position':'absolute','top':'0px','left':'0px'}); $('#afterimage'+randID).css({'position':'absolute','top':'0px','right':'0px'}); $('#handle'+randID).css({'z-index':'100','position':'relative','cursor':'pointer','top':(imgHeight/2)-($('#handle'+randID).height()/2)+'px','left':'-3px'}) $(obj).append('<img src="'+o.imagePath+'lt-small.png" width="7" height="15" id="lt-arrow'+randID+'"><img src="'+o.imagePath+'rt-small.png" width="7" height="15" id="rt-arrow'+randID+'">'); if(o.showFullLinks) { $(obj).after('<div class="balinks" id="links'+randID+'" style="position:relative"><span class="bflinks"><a id="showleft'+randID+'" href="javascript:void(0)">'+o.linkBeforeText+'</a></span><span class="bflinks"><a id="showright'+randID+'" href="javascript:void(0)">'+o.linkAfterText+'</a></span></div>'); $('#links'+randID).width(imgWidth); $('#showleft'+randID).css({'position':'absolute','left':'0px'}).click(function(){ $('div:eq(2)', obj).animate({width:imgWidth},200); $('#dragwrapper'+randID).animate({left:imgWidth-$('#dragwrapper'+randID).width()+'px'},200); }); $('#showright'+randID).css({'position':'absolute','right':'0px'}).click(function(){ $('div:eq(2)', obj).animate({width:0},200); $('#dragwrapper'+randID).animate({left:'0px'},200); }); } var barOffset = $('#dragwrapper'+randID).offset(); // The coordinates of the dragwrapper div var startBarOffset = barOffset.left; // The left coordinate of the dragwrapper div var originalLeftWidth = $('div:eq(2)', obj).width(); var originalRightWidth = $('div:eq(3)', obj).width(); $('#dragwrapper'+randID).draggable({handle:$('#handle'+randID),containment:obj,axis:'x',drag: function(e, ui){ var offset = $(this).offset(); var barPosition = offset.left - startBarOffset; $('div:eq(2)', obj).width(originalLeftWidth + barPosition); $('#lt-arrow'+randID).stop().animate({opacity:0},0); $('#rt-arrow'+randID).stop().animate({opacity:0},0); } }); if(o.animateIntro) { $('div:eq(2)', obj).width(imgWidth); $('#dragwrapper'+randID).css('left',imgWidth-($('#dragwrapper'+randID).width()/2)+'px'); setTimeout(function(){ $('#dragwrapper'+randID).css({'opacity':1}).animate({'left':(imgWidth/2)-($('#dragwrapper'+randID).width()/2)+'px'},o.introDuration,function(){$('#dragwrapper'+randID).animate({'opacity':.25},1000)}); // The callback function at the end of the last line is there because Chrome seems to forget that the divs have overlay hidden applied earlier $('div:eq(2)', obj).width(imgWidth).animate({'width':imgWidth/2+'px'},o.introDuration,function(){clickit();}); },o.introDelay); } else { clickit(); } function clickit() { $(obj).hover(function(){ $('#lt-arrow'+randID).stop().css({'z-index':'20','position':'absolute','top':imgHeight/2-$('#lt-arrow'+randID).height()/2+'px','left':parseInt($('#dragwrapper'+randID).css('left'))-10+'px'}).animate({opacity:1,left:parseInt($('#lt-arrow'+randID).css('left'))-6+'px'},200); $('#rt-arrow'+randID).stop().css({'position':'absolute','top':imgHeight/2-$('#lt-arrow'+randID).height()/2+'px','left':parseInt($('#dragwrapper'+randID).css('left'))+10+'px'}).animate({opacity:1,left:parseInt($('#rt-arrow'+randID).css('left'))+6+'px'},200); $('#dragwrapper'+randID).animate({'opacity':1},200); },function(){ $('#lt-arrow'+randID).animate({opacity:0,left:parseInt($('#lt-arrow'+randID).css('left'))-6+'px'},350); $('#rt-arrow'+randID).animate({opacity:0,left:parseInt($('#rt-arrow'+randID).css('left'))+6+'px'},350); $('#dragwrapper'+randID).animate({'opacity':.25},350); } ); // When clicking in the container, move the bar and imageholder divs $(obj).click(function(e){ var clickX = e.pageX - this.offsetLeft; var img2Width = imgWidth-clickX; $('#dragwrapper'+randID).stop().animate({'left':clickX-($('#dragwrapper'+randID).width()/2)+'px'},600); $('div:eq(2)', obj).stop().animate({'width':clickX+'px'},600); $('#lt-arrow'+randID).stop().animate({opacity:0},50); $('#rt-arrow'+randID).stop().animate({opacity:0},50); }); $(obj).one('mousemove', function(){$('#dragwrapper'+randID).stop().animate({'opacity':1},500);}); } }); } }); })(jQuery); при начальной загрузке, он не срабатывает, а именно var imgWidth = $('img:first', obj).width(); - получает алертом ширину 0, и в результате картинку не грузит, тоже самое происходит когда я делаю Ctrl+F5 в браузере, тоже загрузка 0, НО когда я делать F5, то скрипт срабатывает все отлично, подскажите может быть можно как-то данный скрипт изменить, что-то добавить чтоб данные считывал корректно. Буду очень благодарен. Спасибо |
Alfer, потому что при загрузке картинке до ее полной загрузки размер не известен.
Если страница загружается повторно то браузер моментально грузит картинку с кэша. Ctrl+F5 сбрасывает кэш и загружает картинку с 0. используйте onload http://learn.javascript.ru/onload-onerror#window-onload |
cyber в том то и дело, что если я в самом начале делаю запись: window.onload = (function($){
//код по тексту все равно не отрабатывает скрипт, может быть я не правильно что-то делаю? |
Alfer, нахрена вы сразу вызываете функцию?О_о
вот так нужно window.onload = function($){ //.. } советую прочитать этот раздел http://learn.javascript.ru/function-is-value |
Часовой пояс GMT +3, время: 18:55. |