From 60eb79a5c3292f922c5524b0bae27fe1b7ad22d8 Mon Sep 17 00:00:00 2001 From: Ruben Varela Date: Fri, 23 Jun 2017 11:25:48 -0400 Subject: [PATCH 1/4] Add get_image function that returns the first visible image for the image map. --- js/imageMapResizer.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/js/imageMapResizer.js b/js/imageMapResizer.js index dd619c5..5432cea 100644 --- a/js/imageMapResizer.js +++ b/js/imageMapResizer.js @@ -9,6 +9,17 @@ function scaleImageMap(){ + function get_image() { + var imageList = document.querySelectorAll('img[usemap="#'+map.name+'"]'); + var count = imageList.length; + for (var i = 0; i < count; i++){ + var cImage = imageList[i].offsetParent; + if (typeof cImage != undefined && cImage) { + return imageList[i]; + } + } + } + function resizeMap() { function resizeAreaTag(cachedAreaCoords,idx){ function scale(coord){ From d510675b3febf5ecf10f2d0642206388675324e8 Mon Sep 17 00:00:00 2001 From: Ruben Varela Date: Fri, 23 Jun 2017 11:38:31 -0400 Subject: [PATCH 2/4] Remove original definition of image --- js/imageMapResizer.js | 1 - 1 file changed, 1 deletion(-) diff --git a/js/imageMapResizer.js b/js/imageMapResizer.js index 5432cea..5cf4114 100644 --- a/js/imageMapResizer.js +++ b/js/imageMapResizer.js @@ -71,7 +71,6 @@ function setup(){ areas = map.getElementsByTagName('area'); cachedAreaCoordsArray = Array.prototype.map.call(areas, getCoords); - image = document.querySelector('img[usemap="#'+map.name+'"]'); map._resize = resizeMap; //Bind resize method to HTML map element } From 47e6189f7e69c9f69365fe430bcd5ad2166ebcdf Mon Sep 17 00:00:00 2001 From: Ruben Varela Date: Fri, 23 Jun 2017 11:39:00 -0400 Subject: [PATCH 3/4] Define var image on resizeMap() and on start() --- js/imageMapResizer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/imageMapResizer.js b/js/imageMapResizer.js index 5cf4114..b04bd3e 100644 --- a/js/imageMapResizer.js +++ b/js/imageMapResizer.js @@ -21,6 +21,7 @@ } function resizeMap() { + var image = get_image(); function resizeAreaTag(cachedAreaCoords,idx){ function scale(coord){ var dimension = ( 1 === (isWidth = 1-isWidth) ? 'width' : 'height' ); @@ -51,6 +52,7 @@ } function start(){ + var image = get_image(); if ((image.width !== image.naturalWidth) || (image.height !== image.naturalHeight)) { resizeMap(); } From d821fb70771e811e540a780788a591d7cc85fc15 Mon Sep 17 00:00:00 2001 From: Ruben Varela Date: Fri, 23 Jun 2017 11:45:18 -0400 Subject: [PATCH 4/4] Get current visible image. Wait for it to load and execute resizeMap as a fix to detect late images loading on IE11. --- js/imageMapResizer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/imageMapResizer.js b/js/imageMapResizer.js index b04bd3e..b8171db 100644 --- a/js/imageMapResizer.js +++ b/js/imageMapResizer.js @@ -59,7 +59,9 @@ } function addEventListeners(){ + var image = get_image(); //get current visible image image.addEventListener('load', resizeMap, false); //Detect late image loads in IE11 + window.addEventListener('focus', resizeMap, false); //Cope with window being resized whilst on another tab window.addEventListener('resize', debounce, false); window.addEventListener('readystatechange', resizeMap, false);