Hi there,
I'm the maker of the plugin. If I am not responsive, than its because
I'm pretty busy right now.
That's a lot of code to scan through. How do you include the CSS and
scripts you're talking of?
You need to include all of that in the page that contains the tabs, not
the one that gets loaded (well, at least CSS won't get applied to the
page automagically).
Also take care that you're only including the relevant chunks of html,
not a complete page with a body tag and such. Make sure it gets served
as text/html, not text/plain.
Last not least, most probably you'll need to instantiate the mapMaker in
the onshow callback:
$('#whatever').tabs({
remote: true,
onShow: mapMaker.init
});
Most probably the document.write in the code also breaks the tabs loading.
I'm just guessing a little bit. An online demo would for sure help us to
see better what is going wrong.
-- Klaus
Digislick schrieb:
Hi all,
I've been lurking for a while, reading as much as I can, trying to learn
quickly. But sometimes it's an uphill battle :-) Sorry if this is an
obvious question to you all, but I'm really banging my head against the
wall with this. I've already directly emailed the maker of this plugin
but haven't heard anything back yet, so thought I'd give asking the
group a try.
I would really appreciate it if somebody could tell me why the Tabs
plugin won't work for me. I believe it's what I'm trying to do with it
that's messing things up. The tabs display fine and are active when
clicked, but all I get in the tabs is ugly text from the html file I'm
trying to load in the tab via the AJAX method. The related graphics in
the page just disappear (which are called up through a related CSS
file). I know very, very little about javascript, so I am completely
lost. I am using the following js file to bring up sticky events when
CSS positions are moused over on a calendar (which is all based on a
graphic). What in this script is messing me up? What can I do?
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-24 + 'px';
} else {
objid.style.left = newX + 'px';
};
//check if tooltip fits map height
if ((newY + toopTipHeight) > mapHeight) {
objid.style.top = newY-toopTipHeight-14 + '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);
If anybody could give me a hand to get this running as I'd wish it
would, it would be much appreciated. If you have a PayPal account, I'd
even be willing to buy you a beer! Seriously! If I need to upload the
calendar itself so somebody can clue me in, please let me know. And
apologies again to the old hands at this if this is a ridiculous
question, but I have to learn somehow.
Thanks :-)