Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/01/2013, 01:58
el_loco90
 
Fecha de Ingreso: julio-2012
Mensajes: 234
Antigüedad: 12 años, 5 meses
Puntos: 9
Respuesta: Implementacion de zoom

amigos
he encontrado un foro en ingles donde explican que hacer para que mojozoom ande en ie9 y asi no cambiarlo, aca explicar que hacer http://www.tomatocart.com/community/...ng-and-ie.html

lo hice pero no me funciono sigue igual, alguien me explican como hacer

el js es este
Código Javascript:
Ver original
  1. /*
  2.  * MojoZoom 0.1.6 - JavaScript Image Zoom
  3.  * Copyright (c) 2008 Jacob Seidelin, [email protected], http://blog.nihilogic.dk/
  4.  * Licensed under the MPL License [http://www.nihilogic.dk/licenses/mpl-license.txt]
  5.  */
  6.  
  7. var MojoZoom = (function() {
  8.  
  9.     var $ = function(id) {return document.getElementById(id);};
  10.     var dc = function(tag) {return document.createElement(tag);};
  11.  
  12.     var defaultWidth = 256;
  13.     var defaultHeight = 256;
  14.  
  15.     function addEvent(element, ev, handler)
  16.     {
  17.         var doHandler = function(e) {
  18.             return handler(e||window.event);
  19.         }
  20.         if (element.addEventListener) {
  21.             element.addEventListener(ev, doHandler, false);
  22.         } else if (element.attachEvent) {
  23.             element.attachEvent("on" + ev, doHandler);
  24.         }
  25.     }
  26.  
  27.     function getElementPos(element)
  28.     {
  29.         var x = element.offsetLeft;
  30.         var y = element.offsetTop;
  31.         var parent = element.offsetParent;
  32.         while (parent) {
  33.             x += parent.offsetLeft - parent.scrollLeft;
  34.             y += parent.offsetTop - parent.scrollTop;
  35.             parent = parent.offsetParent;
  36.         }
  37.         return {
  38.             x : x,
  39.             y : y
  40.         }
  41.     }
  42.  
  43.     function getEventMousePos(element, e) {
  44.         var scrollX = document.body.scrollLeft || document.documentElement.scrollLeft;
  45.         var scrollY = document.body.scrollTop || document.documentElement.scrollTop;
  46.  
  47.         if (e.currentTarget) {
  48.             var pos = getElementPos(element);
  49.             return {
  50.                 x : e.clientX - pos.x + scrollX,
  51.                 y : e.clientY - pos.y + scrollY
  52.             }
  53.         }
  54.         return {
  55.             x : e.offsetX,
  56.             y : e.offsetY
  57.         }
  58.     }
  59.  
  60.     function makeZoomable(img, zoomSrc, zoomImgCtr, zoomWidth, zoomHeight, alwaysShow) {
  61.         // make sure the image is loaded, if not then add an onload event and return
  62.         if (!img.complete && !img.__mojoZoomQueued) {
  63.             addEvent(img, "load", function() {
  64.                 img.__mojoZoomQueued = true;
  65.                 setTimeout(function() {
  66.                 makeZoomable(img, zoomSrc, zoomImgCtr, zoomWidth, zoomHeight, alwaysShow);
  67.                 }, 1);
  68.             });
  69.             return;
  70.         }
  71.  
  72.         img.__mojoZoomQueued = false;
  73.  
  74.         // Wrap everything in a timeout.
  75.         // this fixes a problem where, if makeZoomable is called a second time after changing the src,
  76.         // FF would not have figured out the new offsetHeight of the image yet. A small timeout helps though it's rather hackish.
  77.         setTimeout(function(){
  78.  
  79.         // sorry
  80.         var isIE = !!document.all && !!window.attachEvent && !window.opera;
  81.  
  82.         var w = img.offsetWidth;
  83.         var h = img.offsetHeight;
  84.  
  85.         var oldParent = img.parentNode;
  86.         if (oldParent.nodeName != "A") {
  87.             var linkParent = dc("a");
  88.             linkParent.setAttribute("href", zoomSrc);
  89.             oldParent.replaceChild(linkParent, img);
  90.             linkParent.appendChild(img);
  91.         } else {
  92.             var linkParent = oldParent;
  93.         }
  94.  
  95.         linkParent.style.position = "relative";
  96.         linkParent.style.display = "block";
  97.         linkParent.style.width = w+"px";
  98.         linkParent.style.height = h+"px";
  99.  
  100.         var imgLeft = img.offsetLeft;
  101.         var imgTop = img.offsetTop;
  102.  
  103.         var zoom = dc("div");
  104.         zoom.className = "mojozoom_marker";
  105.  
  106.         var zoomImg = dc("img");
  107.         zoomImg.className = "mojozoom_img";
  108.  
  109.         zoomImg.style.position = "absolute";
  110.         zoomImg.style.left = "-9999px";
  111.         zoomImg.style.top = "-9999px";
  112.  
  113.         zoomImg.style.maxWidth = "none";
  114.         zoomImg.style.maxHeight = "none";
  115.         zoomImg.style.zIndex = 10000001;
  116.  
  117.  
  118.         document.body.appendChild(zoomImg);
  119.  
  120.         var parent = img.parentNode;
  121.  
  122.         var ctr = dc("div");
  123.         ctr.style.position = "absolute";
  124.         ctr.style.left = imgLeft+"px";
  125.         ctr.style.top = imgTop+"px";
  126.         ctr.style.width = w+"px";
  127.         ctr.style.height = h+"px";
  128.         ctr.style.overflow = "hidden";
  129.         ctr.style.display = "none";
  130.  
  131.         ctr.appendChild(zoom);
  132.         parent.appendChild(ctr);
  133.  
  134.         var zoomInput = parent;
  135.  
  136.         // clear old overlay
  137.         if (img.__mojoZoomOverlay)
  138.             parent.removeChild(img.__mojoZoomOverlay);
  139.         img.__mojoZoomOverlay = ctr;
  140.  
  141.         // clear old high-res image
  142.         if (img.__mojoZoomImage && img.__mojoZoomImage.parentNode)
  143.             img.__mojoZoomImage.parentNode.removeChild(img.__mojoZoomImage);
  144.         img.__mojoZoomImage = zoomImg;
  145.  
  146.         var useDefaultCtr = false;
  147.         if (!zoomImgCtr) {
  148.             zoomImgCtr = dc("div");
  149.             zoomImgCtr.className = "mojozoom_imgctr";
  150.  
  151.             var imgPos = getElementPos(img);
  152.             zoomImgCtr.style.left = w + imgPos.x + "px";
  153.             zoomImgCtr.style.top = imgPos.y + "px";
  154.  
  155.             zoomImgCtr.style.width = (zoomWidth ? zoomWidth : defaultWidth) +"px";
  156.             zoomImgCtr.style.height = (zoomHeight ? zoomHeight : defaultHeight) +"px";
  157.  
  158.             document.body.appendChild(zoomImgCtr);
  159.             useDefaultCtr = true;
  160.         }
  161.         zoomImgCtr.style.overflow = "hidden";
  162.  
  163.         if (!alwaysShow) {
  164.             zoomImgCtr.style.visibility = "hidden";
  165.         }
  166.  
  167.         addEvent(zoomImg, "load", function() {
  168.  
  169.             // bail out if img has been removed from dom
  170.             if (!zoomImg.parentNode) return;
  171.  
  172.             var zoomWidth = zoomImg.offsetWidth ? zoomImg.offsetWidth : zoomImg.naturalWidth;
  173.             var zoomHeight = zoomImg.offsetHeight ? zoomImg.offsetHeight : zoomImg.naturalHeight;
  174.  
  175.             var ctrWidth = zoomImgCtr.offsetWidth;
  176.             var ctrHeight = zoomImgCtr.offsetHeight;
  177.  
  178.             var ratioW = zoomWidth / w;
  179.             var ratioH = zoomHeight / h;
  180.  
  181.             var markerWidth = Math.round(ctrWidth / ratioW);
  182.             var markerHeight = Math.round(ctrHeight / ratioH);
  183.  
  184.             document.body.removeChild(zoomImg);
  185.             zoomImgCtr.appendChild(zoomImg);
  186.  
  187.             var zoomFill = dc("div");
  188.             zoomFill.className = "mojozoom_fill";
  189.             zoom.appendChild(zoomFill);
  190.  
  191.             var zoomBorder = dc("div");
  192.             zoomBorder.className = "mojozoom_border";
  193.             zoom.appendChild(zoomBorder);
  194.  
  195.             zoom.style.width = markerWidth+"px";
  196.             zoom.style.height = markerHeight+"px";
  197.  
  198.  
  199.             if (alwaysShow) {
  200.                 zoom.style.left = "0px";
  201.                 zoom.style.top = "0px";
  202.    
  203.                 zoomImg.style.left = "0px";
  204.                 zoomImg.style.top = "0px";
  205.             }
  206.  
  207.             var isInImage = false;
  208.  
  209.             if (!alwaysShow) {
  210.                 addEvent(zoomInput, "mouseout",
  211.                     function(e) {
  212.                         var target = e.target || e.srcElement;
  213.                         if (!target) return;
  214.                         if (target.nodeName != "DIV") return;
  215.                         var relTarget = e.relatedTarget || e.toElement;
  216.                         if (!relTarget) return;
  217.                         while (relTarget != target && relTarget.nodeName != "BODY" && relTarget.parentNode) {
  218.                             relTarget = relTarget.parentNode;
  219.                         }
  220.                         if (relTarget != target) {
  221.                             isInImage = false;
  222.                             ctr.style.display = "none";
  223.                             zoomImgCtr.style.visibility = "hidden";
  224.                         }
  225.                     }
  226.                 );
  227.                 // a bit of a hack, mouseout is sometimes not caught if moving mouse really fast
  228.                 addEvent(document.body, "mouseover",
  229.                     function(e) {
  230.                         if (isInImage && !(e.toElement == zoomBorder || e.target == zoomBorder)) {
  231.                             ctr.style.display = "none";
  232.                             zoomImgCtr.style.visibility = "hidden";
  233.                             isInImage = false;
  234.                         }
  235.                     }
  236.                 );
  237.             }
  238.  
  239.             addEvent(zoomInput, "mousemove",
  240.                 function(e) {
  241.                     isInImage = true;
  242.  
  243.                     var imgPos = getElementPos(img);
  244.  
  245.                     if (useDefaultCtr) {
  246.                         zoomImgCtr.style.left = w + imgPos.x + "px";
  247.                         zoomImgCtr.style.top = imgPos.y + "px";
  248.                     }
  249.                     ctr.style.display = "block";
  250.                     zoomImgCtr.style.visibility = "visible";
  251.  
  252.                     var pos = getEventMousePos(zoomInput, e);
  253.                     if (e.srcElement && isIE) {
  254.                         if (e.srcElement == zoom) return;
  255.                         if (e.srcElement != zoomInput) {
  256.                             var zoomImgPos = getElementPos(e.srcElement);
  257.                             pos.x -= (imgPos.x - zoomImgPos.x);
  258.                             pos.y -= (imgPos.y - zoomImgPos.y);
  259.                         }
  260.                     }
  261.                     var x = markerWidth/2;
  262.                     var y = markerHeight/2;
  263.  
  264.                     if (!isIE) {
  265.                         pos.x -= imgLeft;
  266.                         pos.y -= imgTop;
  267.                     }
  268.  
  269.                     if (pos.x < x) pos.x = x;
  270.                     if (pos.x > w-x) pos.x = w-x;
  271.                     if (pos.y < y) pos.y = y;
  272.                     if (pos.y > h-y) pos.y = h-y;
  273.  
  274.                     var left = ((pos.x - x)|0);
  275.                     var top = ((pos.y - y)|0);
  276.  
  277.                     zoom.style.left = left + "px";
  278.                     zoom.style.top = top + "px";
  279.  
  280.                     zoomImg.style.left = -((pos.x*ratioW - ctrWidth/2)|0)+"px";
  281.                     zoomImg.style.top = -((pos.y*ratioH - ctrHeight/2)|0)+"px";
  282.                 }
  283.             );
  284.         });
  285.  
  286.         // I've no idea. Simply setting the src will make IE screw it self into a 100% CPU fest. In a timeout, it's ok.
  287.         setTimeout(function() {
  288.             zoomImg.src = zoomSrc;
  289.         }, 1);
  290.  
  291.         }, 1);
  292.     }
  293.  
  294.     function init() {
  295.         var images = document.getElementsByTagName("img");
  296.         for (var i=0;i<images.length;i++) {
  297.             var img = images[i];
  298.             var zoomSrc = img.getAttribute("data-zoomsrc");
  299.             if (zoomSrc) {
  300.                 makeZoomable(img, zoomSrc, document.getElementById(img.getAttribute("id") + "_zoom"), null, null, img.getAttribute("data-zoomalwaysshow")=="true");
  301.             }
  302.         }
  303.     }
  304.  
  305.     return {
  306.         addEvent : addEvent,
  307.         init : init,
  308.         makeZoomable : makeZoomable
  309.     };
  310.  
  311. })();
  312.  
  313. MojoZoom.addEvent(window, "load", MojoZoom.init);

mil gracias ojala que se pueda solucionar