...And explorer. Of course.
https://fishpoptrace.jrc.ec.europa.eu was designed following this
example: http://www.alistapart.com/articles/cssmaps/
Problem: in IE 7 the popup doesn't show the image, but weirdly, just
change the IE zoom level once, and it appears.
Any help?
Here's the code:
<script type="text/javascript"> var mapMaker = {
offsetX: -16, // tooltip X offset offsetY: 16, // tooltip Y offset
element: null, DLs: false, DTs: false, DDs: false, on: false, /*
constructor - sets events */ init: function(){
var i=0;
var ii=0;
var currentLocation = 0;
mapMaker.DLs = document.getElementsByTagName('dl');
mapMaker.DTs = document.getElementsByTagName('dt');
mapMaker.DDs = document.getElementsByTagName('dd');
// only loop thru items once if( mapMaker.on == false ){
//loop through each DL on page while (mapMaker.DLs.length > i) {
//only affect DLs with a class of 'map' if (mapMaker.DLs[i].className
== 'map'){
//change map DL class, this way map is text only without javascript
enabled mapMaker.DLs[i].className = 'map on';
//strip whitespace mapMaker.stripWhitespace(mapMaker.DLs[i]);
mapMaker.stripWhitespace(mapMaker.DTs[i]);
mapMaker.stripWhitespace(mapMaker.DDs[i]);
// loop thru all DT elements while (mapMaker.DTs.length > ii){
// set the link for the current DT currentLocation = mapMaker.DTs
[ii].firstChild;
// add events to links mapMaker.addEvt
(currentLocation,'mouseover',mapMaker.showTooltip);
//displays tooltip on mouse over mapMaker.addEvt
(currentLocation,'focus',mapMaker.showTooltip);
//display tooltip on focus, for added keyboard accessibility
mapMaker.addEvt(currentLocation,'blur',mapMaker.hideTooltip);
//hide tooltip on focus, for added keyboard accessibility ii++;
};
ii=0;
//loop through DT elements and assign event to close link while
(mapMaker.DDs.length > ii){
currentLocation = mapMaker.DDs[ii].firstChild;
mapMaker.addEvt(currentLocation,'click',mapMaker.hideTooltip);
//hide tooltip on click of close button ii++;
};
ii=0;
};
i++;
};
mapMaker.on = true;
};
}, /* SHOW TOOLTIP */ showTooltip: function() {
var evt = this;
var i = 0;
mapMaker.hideTooltip();
//Find DD to display - based on currently hovered anchor move to
parent DT then next sibling DD var objid = evt.parentNode.nextSibling;
mapMaker.element = objid;
//set for the hideTooltip //get width and height of background map var
mapWidth = objid.parentNode.offsetWidth;
var mapHeight = objid.parentNode.offsetHeight;
//get width and height of the DD var toopTipWidth =
objid.offsetWidth;
var toopTipHeight = objid.offsetHeight;
//figure out where tooltip should be places based on point location
var newX = evt.offsetLeft + mapMaker.offsetX;
var newY = evt.offsetTop + mapMaker.offsetY;
//check if tooltip fits map width if ((newX + toopTipWidth) >
mapWidth) {
objid.style.left = newX-toopTipWidth+6 + 'px';
} else {
objid.style.left = newX + 'px';
};
//check if tooltip fits map height if ((newY + toopTipHeight) >
mapHeight) {
objid.style.top = newY-toopTipHeight + 'px';
} else {
objid.style.top = newY + 'px';
};
}, /* HIDE TOOLTIP */ hideTooltip: function() {
if (mapMaker.element != null) {
mapMaker.element.style.left = '-9999px';
};
}, addEvt: function(element, type, handler) {
// assign each event handler a unique ID if (!handler.$$guid) handler.
$$guid = mapMaker.addEvt.guid++;
// create a hash table of event types for the element if (!
element.events) element.events = {
};
// create a hash table of event handlers for each element/event pair
var handlers = element.events[type];
if (!handlers) {
handlers = element.events[type] = {
};
// store the existing event handler (if there is one) if (element
["on" + type]) {
handlers[0] = element["on" + type];
};
};
// store the event handler in the hash table handlers[handler.$$guid]
= handler;
// assign a global event handler to do all the work element["on" +
type] = mapMaker.handleEvent;
}, handleEvent: function(event) {
var returnValue = true;
// grab the event object (IE uses a global event object) event =
event || mapMaker.fixEvent(window.event);
// get a reference to the hash table of event handlers var handlers =
this.events[event.type];
// execute each event handler for (var i in handlers) {
this.$$handleEvent = handlers[i];
if (this.$$handleEvent(event) === false) {
returnValue = false;
};
};
return returnValue;
}, fixEvent: function(event) {
// add W3C standard event methods event.preventDefault =
mapMaker.fixEvent.preventDefault;
event.stopPropagation = mapMaker.fixEvent.stopPropagation;
return event;
}, stripWhitespace: function( el ){
for(var i = 0;
i < el.childNodes.length;
i++){
var node = el.childNodes[i];
if( node.nodeType == 3 && !/\S/.test(node.nodeValue) )
node.parentNode.removeChild(node);
} } };
mapMaker.fixEvent.preventDefault = function() {
this.returnValue = false;
};
mapMaker.fixEvent.stopPropagation = function() {
this.cancelBubble = true;
};
mapMaker.addEvt.guid = 1;
/* LOAD SCRIPT */ /* for Mozilla */ if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", mapMaker.init, null);
};
/* for Internet Explorer */ /[EMAIL PROTECTED] @*/ /[EMAIL PROTECTED] (@_win32)
document.write("<script defer src=ie_onload.js><"+"/script>");
/[EMAIL PROTECTED] @*/ /* for other browsers */ mapMaker.addEvt( window,
'load',
mapMaker.init);
</script>
--~--~---------~--~----~------------~-------~--~----~
--
You received this because you are subscribed to the "Design the Web with CSS"
at Google groups.
To post: [email protected]
To unsubscribe: [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---