8.5.5 is the final Floatbox release. No further updates will be forthcoming.
Change Log
v8.5.5
2024/02/14Bug Fix
- A paused slideshow that was being manually stepped through could auto-end on a timer after the last slideshow item was viewed.
v8.5.4
2023/07/04Bug Fixes
- A double-click on a starting link could crash floatbox, requiring a page refresh to recover. The second click would try to close the box before the first click's box start had completed.
- Fixed a few edge cases of resizing failures, such as offering to enlarge an image when it was already at maximum screen-filling size, and not allowing resizing images when autoFit was set to false.
v8.5.3
2023/03/02Bug Fixes
- Fixed a problem where two or more simultaneous calls to the fb.start API function would open two or more floatboxes that would argue over which one holds what content and which one gets displayed on the z-index top.
- Default behaviour for the autoGallery option was not implemented correctly. It was dependent upon being explicitly set in the options.
v8.5.2
2021/03/29Enhancements
- Cross-domain iframe content that runs the same version of floatbox.js as its parent or host page will securely send fb.*() commands to that parent for action on the sending instance. fb.end, fb.resize, fb.reload, fb.showItem, fb.pause, and fb.goBack will operate across cross-domain boundaries, but fb.end() may be the only truly useful one in this context.
- When a #hash value is included on a floatboxed iframe URI, Floatbox normally strips off the #hash value and handles scrolling to a matching id itself instead of letting the browser make a hash of it (so to speak). To send a #hash value to the content that is not being used for initial scroll position, make it a #!hashbang (replace # with #!). The !exclamation character will get dropped, the remaining #hash will be included on the URI, and Floatbox won't try to scroll to it.
v8.5.1
2021/03/23Enhancements
- The built-in video player will now reset the video and display its poster if the host floatbox is not auto-ending or progressing to the next item in a slideshow.
Bug Fixes
- In cases where oversized captions (or headers or footers) would cause an 'autoFit' floatbox to spill out past the screen dimensions, a tap to zoom the image up to full size would instead cause the image to shrink even further and in doing so really mess up layout and screen-fitting.
v8.5.0
2020/11/14Enhancements
- New headerGap and footerGap options allow setting a configurable gap between the header and footer elements and the main floatbox top and bottom edges.
Bug Fixes
- Large(ish) header and footer elements could slightly affect the vertical positioning of a floatbox in the viewport. This was only noticeable for gallery sets that consisted of same-sized images.
v8.4.2
2020/08/03Enhancements
- New options boxX and boxY allow positioning the center point of a floatbox in the viewport, as contrasted with the existing boxLeft and boxTop options that position the top-left corner of a floatbox.
- Floatbox is now friendlier to iframe content that locks its sizing to the startup iframe size.
- Touch users can use two-finger pinch and zoom gestures to resize resizeable images (in addition to the simpler one-finger tap on the image carried forward from previous versions).
- The overlay navigation widgets will be hidden for touch users viewing gallery set images after they make their first swipe gesture to navigate through the gallery items.
Bug Fixes
- Options assigned to type:iframe in fbOptions.js or per-page fbOptions objects would not get picked up and applied.
- Floatbox was failing to activate <a> links that reside inside an <svg> element because it couldn't read the 'href' or 'xlink:href' values. Now it can.
- Initial sizing of iframes was off when using the 'aspect' option rather than explicit 'width' and 'height'.
- On mobile devices, floatboxes with header or footer elements could cause the base page to scroll up and the floatbox to get displayed below the visible viewport.
- The Options Reference use to say that stickyMove and stickyResize applied to fb.resize() calls, but that was a lie.
v8.3.3
2020/03/07Bug Fixes
- outsideClickCloses was failing for non-modal or overlay-less floatboxes where the <body> element did not fill the viewport.
v8.3.2
2019/09/20Bug Fixes
- Gigantic captions could cause a floatbox to display off-screen when auto-fitting.
- Captions that reference hidden div IDs must begin with a '#' character.
- Capitalization of 'href' captions parsed from filenames was not handling apostrophe'S correctly.
v8.3.1
2019/09/01Bug Fixes
- HTML content did not auto-fit to screen size perfectly because it was wrongly being resized with a proportional aspect ratio.
- Failure to find the video ID in YouTube links that used the 'embed' syntax would cause addVideoThumb to fail for those links.
- The navigation overlay panels that lie on top of gallery set images were making brief and unwanted appearances immediately after the image zoomed open.
v8.3.0
2019/08/20Bug Fixes
- Specifying width and height as % of screen was being ignored for iframe content in 8.2.x versions.
- Aspect ratio of videos on small-screen devices was not being preserved (because of type: { video: { mobile: { width: '100%' } } } in fbOptions.js).
- In 8.2.x versions, iframes would get a contentBackgroundColor of the boxColor (normally grey) instead of the expected default of white.
- The magnifying glass resize widget in the top-left corner of an image was sometimes making a brief and unwanted appearance immediately after the image zoomed open.
- Having different versions of Floatbox on a document and in a child iframe could crash the iframe's fb instance.
- Could not set 'preloadLimit' to 0.
Enhancements
- New hoverPan option added that allows disabling of mouse-move panning of in-frame-resized images.
- The attachTo option was present but not documented. Now it is.
v8.2.6
2019/04/14Bug Fixes
- Videos with width and height set but no aspect option defined would lose their correct proportions when sizing down to fit a small screen.
- In Firefox only, video controls would hide when moused-over in an attempt to use them.
v8.2.5
2019/04/04Bug Fixes
- The slow-load spinning gif indicator would fail to show when there was a delay in fetching content over the network.
- A spurious line of text could appear at the top of HTML content when printing floatbox content or using the fb.printNode function.
- The default pageScroll:false behaviour could result in floatboxes opening off-screen on some complex page layouts.
v8.2.4
2019/03/13Bug Fixes
- Iframe content that followed a video in a gallery set would fail to display.
- Cross-domain and PDF iframe content could get its default sizing all wrong when displayed with a large caption, header or footer.
v8.2.3
2019/03/05Bug Fixes
- Captions coming from a hidden div and displayed as part of a gallery set could get misplaced when transferred out of the floatbox and back to the base page during item transitions.
- strictCentering was documented as defaulting to true but was in fact defaulting to false when not set. It's now gone back to a true default and once again behaves like the docs promise.
Enhancement
- A more aggressive inspection of script element paths should meet with more success in finding the floatbox source folder when floatbox.js is added to the document sometime after the document has completed loading.
v8.2.2
2019/02/24Bug Fixes
- Floatboxes would open off-center or off-screen on zoomed Android devices.
- Hidden div content displayed as part of a gallery set could get misplaced when transferred out of the floatbox and back to the base page.
v8.2.0
2019/02/17Enhancements
- New aspect option allows for easy setting of aspect ratio for videos, or any other content.
- New detachOuterClose option lets the outerClose button be pinned to the top screen or viewport corners instead of to the floatbox.
- The old attachTo option has been brought out of retirement and put back into Floatbox, primarily so that form elements can participate in ASP.NET WebForms.
- Oversized images that are enlarged up to full size inside a smaller floatbox frame respond to simple mouse-hover movements to move them around - no need to hold the mouse button down while dragging.
- New zoomIn and zoomOut animations opacity-fade the box components instead of growing and shrinking the box frame from behind the content.
- Old zoomBorder option has been removed. zoomSource is now borderless to better integrate with box fade in.
- All reading and assigning of size and position metrics for floatbox elements now use floating-point numbers. This seems to have quashed all mildly irritating sub-pixel displacements and gaps that could arise from integer rounding.
- The frame-area panels that hold all the captions and controls are now laid out using css flex elements, which has quashed some minor vertical mis-alignments of some panel components.
- Better and simpler choices are now made for where to zoom out to when closing a gallery set floatbox.
- There's a new noFocus option which, when set to true, will disable the default auto-focussing of the first text-input form element in HTML content.
- The strictCentering option recognizes two additional settings of 'top' and 'bottom', for restricting the centering to one panel only.
- The outerClose button can be detached from the floatbox and pinned to one of the upper corners of the screen. This replaces the old behaviour of sliding the button around on the box to try to keep it visible.
- Better handling of mouse moves and resizes when the cursor wanders over the floatbox content area or outside of the browser window.
- The pageScroll option is now smarter when not set. Default is to disable page scrolling when a modal floatbox fits within the visible screen.
- The Instructions and the demo page have been updated with an improved and contemporary strategy for handling PDF documents.
- Playing videos are now halted before an ending animation begins, rather than after the animation completes.
- Much better integration between parent and child iframes that both use floatbox.js, including merging of fbOptions set on both pages.
- Keyboard <esc> succeeds in closing cross-domain iframe and video floatboxes under more circumstances.
- A new fb.getRect API function has been added. It's a more efficient replacement for the now-retired (but still present) fb.getLayout function.
- The fb.getStyle API function has been enhanced with the addition of 'margin', 'border', and 'padding' short-name getters which return four-member objects of each sides width.
- By popular demand, the configurator has been put back in the package and can be found in the floatbox/resources/ folder.
Bug Fixes
- The nav panel's previous and next SVG icon graphics had an erroneous skinny, pointy top end.
- fbCyclers were failing to suspend cycling while a modal floatbox was over top of them.
- Positioning iframe scroll top to a #id element at box start would get the wrong position if the referenced element's offset parent was not the iframe's body.
v8.1.3
2018/12/19Bug Fixes
- When using touch, popup thumbnails would both open and follow the link on the first tap.
- A recently introduced Firefox browser bug (starting with build 63?) prevented popup thumbs from popping up in that browser.
v8.1.2
2018/11/29Bug Fixes
- Various mouse and touch move operations within a floatbox could misbehave due to failure to prevent browser default actions.
- fbCyclers inside a modal floatbox would fail to cycle.
- When fb.resize() was called with scrolled HTML content in the floatbox, the content could lose its scroll values and scroll up to (0,0).
- iframes could scroll to their top when centerOnResize kicked in.
- doSlideshow:true was in conflict with enableWrap:false (because slideshows may need to wrap to complete) and could throw an infinite recursion error. This is now fixed by ignoring enableWrap:false when doSlideshow is in effect.
Enhancements
- Using the mouse wheel over top of floatbox content will not scroll the entire document.
v8.1.1
2018/08/19Bug Fixes
- The new and useful autoGallery option in version 8.1.0 simply did not work. Now it does.
- addVideoThumb was suppossed to default to 'medium' when not set, but was actually defaulting to false.
Enhancements
- Managed to convince Chrome not to pan zoomed underlying pages when touch-moving or swiping on a floatbox.
- pageScroll:false now prevents the appearance of vertical scrollbars due to browser window resizes after the floatbox has started.
- Custom loading of floatbox through a script consolidation system or other non-typical script fetch is supported through new scriptPath and ready properties on the fbOptions object. See the Instructions for details.
- Floatbox callbacks such as 'afterBoxStart' and its friends now accept a simple string name of a function defined on the window object for callback execution. See the Options Reference for details.
v8.1.0
2018/08/01Enhancements (and other changes)
- Open Source release. MIT license.
- Support for Internet Explorer has been dropped in favour of more efficient and modern technology. (Seems to work ok on IE 9 through 11, but 7 & 8 are dead.)
- All Flash capabilities have been removed, including 'flash' as a content type, the fb.flashObject API function, and video player fallback to Flash for browsers that can't do HTML5 video.
- The fbIcons font set that provided graphics for floatbox controls is gone. The retirement of old IE support allows us to now use SVG graphics on the controls. The SVG graphics display more crisply than the old font characters, and are easier to deploy when loading Floatbox from a foreign domain.
- The new SVG icon graphics are exposed on the API in the fb.icons object. They can be referenced and used in external projects and, heaven forbid, could be modified at run time to provide custom graphics to the floatbox controls.
- A new autoGallery option works in conjunction with activateMedia. Set autoGallery:true to display all auto-activated image links on a page as a gallery set rather than as single standalone images.
- YouTube and Vimeo autoplay works again. It stopped working in version 7.5.2 in April 2018 when Google placed restrictions on autoplay of unmuted videos.
-
Video player improvements:
- Uses higher resolution 'addVideoThumb' youtube thumbs
- Zooms from/to 'addVideoThumb' thumbnail images by default
- Can set "zoomSource:poster" if a custom defined poster image is being used
- Better integration with the zoom image handoff to the video element's poster
- Better detection of autoplay success to avoid brief flashes of the poster
- 'file not found' and other error conditions are more simply and clearly detected and reported
- Modal floatboxes will now restrict tab-browsing to just the active floatbox, its controls, and the browser controls across the top bar. All elements on the underlying page have their tab-index set to exclude them as tab-browsing targets. This behaviour is a great help to those users that have difficulty using a mouse, or who simply prefer using the keyboard.
- New keepCentered option added (defaults to true) which more-or-less reinstates the old 'centerOnResize' behaviour, but includes centering on page scroll in addition to browser resize.
- fbCyclers are better behaved in a greater variety of document contexts and accommodate browser resizes with more grace and fluidity.
- The fb.getViewport API function now gives more reliable results on a greater variety of zoomed mobile screens and includes the page scroll values 'top' and 'left' in addition to viewport 'width' and 'height'.
- stickyMove and stickyResize now both default to 'true'.
- The Floatbox package no longer includes .gzip files and the instructions no longer instruct how to use them. It is the rare hosting service that does not allow server-side gzipping and deflating now. Better to use server-side compression for all your text files in place of the old .gzip files for just the Floatbox files.
- The default colorTheme for HTML content has been changed to 'silver'. Folks who don't like this can easily set colorTheme:'white' in the 'html' section of the 'type' section of fbOptions.js.
- When a video is a member of a slideshow set, the floatbox pause/play controls are disappeared because users might sensibly assume they would pause and play the video - which they don't.
- When loading HTML content that contains form fields, Floatbox will try to auto-focus the first editable text input element.
- Setting caption or caption2 to 'href' will now capitalize words gathered from the content's filename.
- References to floatbox component elements, such as 'fb.fbContent', are no longer placed on the fb object. They can still be found as properties on the instances (e.g. '[instance].fbContent'). See the API Reference for info about getting instance references.
- The ability to animate scrolling of elements or the window has been removed from the fb.animate API function.
- Eliminated the box move cursor (because it was often jumpy and ill-behaved).
Bug Fixes
- A one-pixel postioning bug on tooltips placed to the right or bottom of the host element could cause mouseovers to fail and the tooltip to close prematurely.
- minBoxWidth and minBoxHeight could argue with dragResizing under some circumstances.
- boxLeftAdjust and boxTopAdjust when set as a percent was not working as advertised, which is to move the floatbox the requested % portion of the visible screen.
- Reduced (eliminated?) occurrences of unwanted unnecessary wrapping of captions and controls.
v7.5.2
2018/02/19Bug Fixes
- When loaded in a cross-domain iframe, Floatbox would throw a non-fatal security error trying to access the parent Window.
- After throwing the above error, the fb.require API function would be unable to execute callbacks.
- If a language other than 'en' was set, that other language would fail to load in a cross-domain iframe due to reliance on the inoperative fb.require function callback.
Enhancements
- Lots of documentation improvements in terms of clearer language and typo fixes.
v7.5.1
2018/01/162018/01/23 - security patch update
Bug Fixes
- Videos started in the paused state could get duplicate click/touch handlers assigned which would cause them to play and then immediately pause again when clicked to start.
- Calling the fb.resize function with no parameters in order to resize a floatbox to fit changed HTML content could measure too high due to scrollbars being present on the content during measurement but not present when subsequently displaying.
- A second call to fb.resize that is meant to return the floatbox to its default size would instead set the size to that requested in the previous fb.resize call.
- When moving a floatbox around with mouse-drags, Firefox could select underlying text on the main page area if the mouse position wandered outside of the floatbox frame area.
Enhancements
- Videos started from a zoomed image animation (zoomSource assigned) do a little less jumping and flashing in some browsers due to the zoom image remaining displayed for a short time while the video element is initialized and rendered beneath it.
- Loading of the video element's poster image is cleaner and quicker due to no longer waiting for the image to preload before displaying the video element.
- Better handling of non-standard language codes in the <html> element's "lang" attribute when checking for the page language in use.
- Better positioning of cycling images when the cycler is placed inside a table that has the deprecated align="center" attribute on it.
- Chrome changed the default behaviour of touch events on the document element thereby disrupting Floatbox's touch handling. This release forces Chrome into the old behaviour that all other browsers continue to follow.
- Flash fallback has been removed from the video player because enhanced security is causing Flash playback to fail and nobody is using a browser that can't do HTML5 video.
v7.5.0
2017/10/06Bug Fixes
- With multiple tooltips assigned on a page a multi-touch gesture could open more than one of those tooltips at the same time, and then have trouble closing them cleanly.
- The afterItemStart callback would fail to fire if specified as an executable string. It would work only when specified as a direct function or function reference.
- When using the '%w' syntax of the height option to define an aspect ratio, the floatbox could lose its correct proportionality after resizing.
- A video that was part of slideshow set would fail to advance to the next item when the video reached its end.
- A harmless error message could get logged in the browser's developer console when loading cross-domain iframe content.
Enhancements
- If 'language' is not specified in the global options it will try to use what is specified in the 'lang' attribute of the <HTML> element.
v7.4.1
2017/05/28Bug Fixes
- addVideoThumb and addPlayButton would mess up the layout of the added link images unless the underlying image had css 'display:inline-block' assigned.
- fb.addClass could add spurious class names such as 'undefined' and 'null' in some circumstances.
Changes
- When calling fb.activate() against a page that has been modified, previously activated items (floatbox, tooltip and context box links) will be removed from Floatbox's inventory to allow for modified gallery set membership and order.
- Floatbox no longer attempts to detect and use the localized language of a visitor's browser. To get strings in a language other than English, set Floatbox's language option.
- More complete information on using Floatbox in a WordPress child theme has been added to the instructions.
v7.4.0
2017/02/28Enhancements
- New autoDelay option added which allows 'autoStart' floatboxes to wait a specified number of seconds after page load before starting the floatbox.
- fb.getClass added to the API to reliably retrieve class names from all elements by using either the element's 'classList' or the 'className' interface.
Bug Fixes
- Custom event handlers such as 'onclick' assigned to floatboxed links could throw an error when calling Floatbox API functions (because the global 'fb' object was inaccessible in that context).
- Floatboxed links that resided inside an SVG container would fail to activate and operate.
- Related to the preceding: fb.hasClass and fb.addClass API functions now prefer to use the 'classList' interface and can work inside SVG containers and possibly other unusual circumstances.
v7.3.3
2016/07/02Bug Fix
- Unable to open a floatbox from an image map's <area> elements due to the getLayout() API function throwing an error when calculating area layout.
v7.3.2
2016/06/21Changes
- Found a reliable strategy to bypass Firefox's problematic design choices and serious bugs with iframes in scrollable elements.
- More accurate positioning of floatboxes on iOS zoomed screens.
- More accurate animation starting and ending at the touch location on all mobile zoomed screens.
- Edge browser was logging complaints about fbicon.woff being unreadable. Regenerating the icon font files quieted things down.
- If network problems are preventing content from loading, the start request can be cancelled by the user with a click, tap or 'esc' key once the 'loading' gif spinner is displayed.
- 'loadPageOnClose', when set on the first member of a gallery set, would be ignored if the floatbox was closed while some other set member was being shown.
v7.3.1
2016/06/13Changes
- This is a quick update to 7.3.0 to fix hyper-active drag-resizing of floatboxes.
- Also fixes multiple simultaneous floatboxes restacking in undesired z-index order on browser window size or orientation change.
- And a small problem of frame-area widgets (controls, etc.) being slightly dislocated when HTML content has a vertical scrollbar.
v7.3.0
2016/06/10Bug Fixes
- Floatbox links inside same-domain iframes would refuse to start on click or touch.
- Vimeo videos could fail to auto-end on fast networks, and would always fail to auto-end if loaded from an iframe.
- Touch swiping on a gallery set image to navigate to the previous or next image would move the underlying page if it was horizontally scrollable.
- HTML content in a floatbox that resized smaller, in order to autoFit the screen, would gain a horizontal scrollbar rather than reflowing to the new box width.
- When an image was in-frame resized up and the floatbox was resized, either by the resize dragger or the fb.resize() function, the image size and position would go nuts.
- Gallery sets (and slideshows) initiated from a "showThis:false" link would always open with the last member of the referenced group.
- New iframe content loaded with the "sameBox:true" option set would make two network fetches of the content page while loading.
- fbTooltips could change the layout of the host element when the tooltip closed. The Floatbox code confused the tooltips with fbPopups and set "display:inline-block" on the host, which the popups need.
- On documents where the <html> element had a CSS margin-top value assigned (a popular practice in WordPress themes), floatbox positioning could be out by the margin amount.
- fbCyclers running in old IE (7 & 8) would collapse the image widths to almost zero (because IE pre 9 can't handle both width and max-width applied to images).
Enhancements
- New arrowSize option controls the size of an fbTooltip's small triangular arrow, including removal of the arrow by setting a size of 0.
- New strictCentering option, defaulting to true, reinstates accurate centering for widgets placed in the 'tc' and 'bc' position. A new fbOptions.js entry turns this off for small-screen mobile devices.
- The centerNav option has been reinstated after having been dropped in version 7.2.0.
- Added a content scroll handler on iOS devices (iPad etc.) which scrolls HTML content when the screen is zoomed. (iOS native scrolling works only on unzoomed screens.)
- Positioning of fbTooltip arrows against the tooltip body is now more precise.
- Touch devices can now see and use the popup thumbnails in gallery index links. Previously, 'showIndexThumbs' was forced to 'false' when using touch gestures.
- Tapping a cycling image set when 'cyclePauseOnClick' is 'true' will now immediately suspend the in-progress animations and not wait until it's time to transition to the next image.
v7.2.0
2016/05/29Bug Fixes
- The iePre9 module that backfills IE 7 & 8 capabilities would throw a stack overflow error in real IE 8 (but not in emulated IE 8). Anybody running version 7.1.1 who needs to support IE 8 visitors, needs to update to 7.2.0 (or later).
- For IE version 10 and earlier, floatboxes with "boxScroll:false" set in their options would disappear from the screen on scrolled pages.
- Improvements to iframe content scrollability on iPads broke the ability to scroll to a #hash target in the iframe document at load time, but this is fixed now.
- Images with 'inFrameResize' set to false (such as is done in the 'naked' class options), when sized down to fit the screen, could not be resized up to full native size.
- fb.getViewport was returning virtual, not physical, dimensions for mobile zoomed browser windows that have scrollbars. This had the follow-on side defect of sizing floatboxes to the virtual screen, not the viewable real screen.
- The video player used for displaying .mp4 videos was failing to auto-end the host floatbox when the video reached the end.
- Scrolling a mobile screen with a touch-swipe gesture could trigger an unwanted close of a showing floatbox.
- stickyResize and stickyMove made it into the docs, but not into the code. Now they are present and working.
- A quick mouse transit across an fbTooltip host element could open the tooltip and then leave it open, failing to close it on mouseout.
- Popup thumbnails on a link would not open from a touch gesture. Instead the link would be immediately taken. Now the link is taken on the second touch, after the thumbnail is shown.
- With multiple non-modal floatboxes showing, a box would fail to restack itself to the top on touch or click.
- Fixed a WebKit (Chrome, Safari, Opera) bug where a tooltip would not close if the host element moved away from a stationary mouse.
- On iOS devices (iPad, iPhone, etc.), touches on <area> elements anywhere, and some links in fbTooltip content, would not register and so could not start a new floatbox.
- Dynamically adding gallery set member links to a page multiple times (perhaps by AJAX import) would result in multiple copies of those items in the set.
Enhancements & Changes
- New activateMedia option, which defaults to true, will automatically floatbox-ize all image and video links on a page - no need to set the 'floatbox' class for each one. Also lights up flash and pdf, but not HTML or other oddball links.
- Major changes to enhanced tooltips eliminates the 'moveWithMouse' and 'attachToHost' options, and places a small triangular arrow pointing to the host element on the tooltip edge.
- The old on-again off-again centerOnResize behaviour, where adjustments to screen zoom, orientation and resizing will trigger a repositioning and maybe resizing of any open floatboxes, is on again.
- fb.resize, when called with one, but not both, of width or height specified, will adjust the unspecified dimension so as to maintain correct proportions for images, video and other proportional content.
- Strict centering of panel components assigned to the 'tc' or 'bc' position is no longer assured. It was too expensive in terms of blank panel space left unused on either side of the center cell, and could easily mess up the layout on smaller screens or browser windows.
- Because strict centering in the panels is gone, the 'centerNav' option no longer exists as well.
- The 'cycleResumeOnHover' option is gone because it is not possible to reconcile that setting with touch device behaviour.
- Yet more improvements to Floatbox's measuring of HTML content.
v7.1.1
2016/04/18Enhancements
- General Progress
- The background images for controls have been replaced with an icon font set, giving a much crisper and higher-quality appearance to those controls.
- Local, YouTube and Vimeo videos can participate in a gallery set or slideshow and will advance to the next slideshow item on video completion.
- Improved mixed-type gallery sets can have index links and overlay navigation for all items.
- fbCycler image sets can use a 'Ken Burns' zoom effect through use of 3 new options: cycleZoom, cycleEasing, & cycleInflection.
- Scrolling iframe content on iOS using touch-move gestures works much better.
- Image cyclers and slideshows will pause when the browser tab or window becomes inactive, thereby avoiding problems of queuing and batching thousands of animations and reflows for when the tab becomes active again.
- Gallery set image transitions will always be of type 'shift' when prev/next navigation occurs from a touch-swipe gesture (because it looks right).
- The floatbox frame area contains 6 panels instead of the previous 4, giving more control over positioning of controls, captions and other widgets, and allowing for better centering of components.
- Support for IE 7 and 8 has been moved out of the core Floatbox files and into a separate 'iePre9_*.js' file that is dynamically loaded only for old IE and that provides backfill for round corners, shadows, JSON.parse, document.querySelectorAll, and a couple of others.
- The HTML5 video player prefers MP4 format over WEBM (now that Chrome has fixed their mp4 bugs) and should work fine in all modern browsers with no WEBM version of the video present.
- Text on the controls ('close', 'next', etc.) is presented in the current language, not necessarily English.
- Click actions on floatboxed links are disabled until the floatbox click handlers have been applied, preventing premature navigation while the page is loading.
- The outerClose button will slide along the floatbox edge to always appear within the visible screen area when the floatbox corner itself is off-screen.
- The floatbox component elements no longer have ids assigned to them, and so should be fairly immune to false positives generated by overly-broad AdBlock lists.
- The numbered ids of the form id="fb_xx" are no longer assigned to page elements.
- Can have a boxCornerRadius when using a boxBackgroundImage or gradient boxColor (except in IE pre 9).
- nn and nb language files have been added to support localization for Norwegian dialects.
- The old 'quirks mode' warning is gone. This version seems to work fine in quirks mode, but support for layout issues is available only if using standards mode.
- Options Improvements
- mobile option settings have been added that allow different option configurations for small vs. large screen devices.
- A new 'modern' set of class options gives a nice alternative appearance to the usual frame area that wraps all around the content and is more in keeping with modern page designs.
- A new classOptions section has been added for 'fbInfo', which applies only to boxes opened from "Info..." widget links.
- New options stickyResize and stickyMove replace the old 'stickyDragResize', 'stickyDragMove' and 'stickyAutoFit' (but the old ones will still be picked up as synonyms).
- New animationTime global option which controls the default speed animations done by the new fb.animate API function.
- New easing and inflection global options which control the default easing curve of all Floatbox animations.
- A new animated imageTransition type of 'expand'.
- New overlayBackgroundImage option will attach a repeating background image to the normally transluscent page overlay.
- The 4 newly renamed min/maxWidth/Height options can accept % values to size to the browser window. (The previous min/maxContentWidth/Height would accept only px values.)
- New autoPlayVideo option added which defaults to true, but can be set to false to disable autoplay.
- Isolating floatbox to an iframe is now done by setting the global option framed to true, in fbOptions on the page, as "?fbOptions=framed:true" on the URL, or in the fbOptions.js file.
- API Additions
- fb.animate for animating groups of elements and properties, with easing, monitoring and completion callbacks.
- fb.require provides effective and efficient management of all network-fetched javascript sources (not just the Floatbox sources).
- fb.select provides full 'querySelectorAll' functionality for selecting document elements using CSS syntax, similar to jQuery or Sizzle selectors.
- fb.setStyle for easy setting of multiple CSS style properties on one or more elements in one call.
- fb.ready and fb.docReady replace the old 'afterFBReady' callback and 'fb.DOMReady' function.
- fb.ajax includes a responseJSON object in its callback params if the fetched responseText is valid JSON.
- fb.usingTouch has been added to the API to reliably report whether or not a touch device is in use.
- fb.start can accept an array of content sources to show a gallery set of multiple items.
- fb.getLayout reports physical, not virtual, screen coordinates on zoomed mobile devices.
- fb.getLayout returns metrics for all 4 sides of an element's margin, border and padding, in addition to the standard border-box rectangle metrics.
- fb.end() can accept a function as its only parameter and will call that function when the ending animation finishes (just after calling afterBoxEnd if that is set).
Changes
- General
- The options.js file is renamed to fbOptions.js (options.js cannot be used with version 7), and fbPageOptions is renamed to fbOptions and uses the same structure as fbOptions.js.
- The 'custom' colorTheme is gone, along with the supporting custom.css. Users of this old colorTheme will revert back to default colours. Use the various color options, possibly in a classOptions definition, to customize floatbox colors.
- 'licenseKey' entries in per-page fbOptions override and replace licenseKey(s) entered in fbOptions.js - the two lists are not merged as they were previously.
- The old options.js file had a 'childBox' classOptions section that could assign settings to secondary floatboxes. The new fbOptions.js file does not have this pseudo-class, but instead has a 'fbInfo' section which targets only floatboxes opened from 'Info...' links.
- 'navType' defaults to 'both' for images-only gallery sets, and to 'button' for mixed content type sets.
- The 'floatboxClass' option used to accept multiple class names to be recognized by Floatbox, but now can accept only one (with the default of 'floatbox' of course).
- Default 'resizeTime' changed to 0.7 and 'transitionTime' to 0.8 (a little quicker than the old values).
- 'moveWithMouse' default changed to true
- Removed Options
- boxRoundCorners & contentRoundCorners: Use 'boxCornerRadius' and 'contentCornerRadius' instead (set to 0 to turn them off).
- hideObjects & hideJava: Set a proper wmode on videos and don't use java.
- controlsType: Use the new showControlsText option to manage the text on the controls.
- strongControls & controlsOpacity: Use 'textColor' and 'strongTextColor' to set appearance.
- showStartGif: No animated gif is displayed while a floatbox is animating, but the slowLoad wait gif will still come on if necessary.
- mobileDoAnimations: Set 'doAnimations' in mobile options.
- mobileNewWindow: Set the new newWindow option in mobile options.
- cycleEnableClick: Name changed to cyclePauseOnClick, but the old name still works.
- minContentWidth/Height, maxContentWidth/Height: Renamed to minWidth/Height, maxWidth/Height, but the old names still work.
- attachTo: The floatbox elements now always attach to the bottom of the document body.
- minFlashVersion: There is no reason to check Flash versions now.
- measureHTML: Floatbox now just does the right thing in this regard without being told.
- pipIndexThumbs: The index thumbs will now always appear just above or below the index links.
- proportionalResize: To force proportional resizing on content that doesn't otherwise have it, specify a height option using the '%w' syntax.
- showNavOverlay:once: showNavOverlay is still alive, but the 'once' setting for it is gone.
- mouseSpeed: This was to prevent tooltips from flashing up on a quick transit of the mouse over the host element. Prevention is now done with a default 'delay' setting of 333 msecs.
- tooltip & tooltipOptions: It was dumb idea to attach tooltips to a floatbox's content area.
- installPath, graphicsPath & languagesPath: Version 7 does not support scattering the Floatbox files around to alternate folders.
- showNewWindowIcon: The icon is always shown on 'showNewWindow' links.
- API Changes
- fb.resize has been completely redone with a new parameter structure. Previous version style calls will not work. (So sorry, but the old one was terribly flawed and ill-conceived.)
- fb.getByClass & fb.getByTag are superceded by fb.select. (They are still available on the API to support existing code that uses them.)
- fb.ajax no longer has an async parameter and will not attempt asynchronous fetches. Accordingly, the xhr object is no longer returned to the caller (but is still passed to the callbacks).
- getIframeWindow & getIframeDocument removed from the API.
- fb.loadPageOnClose is gone. Set the option of the same name or use the fb.end() parameter.
- The afterFBLoaded callback is obsolete. Use the new fb.ready API function to set page startup actions.
- The afterPrint callback is gone because it was useless.
- The afterResize callback is gone too, because it too was useless. Although the new fb.resize function takes a callback as an optional parameter.
- fb.attr will return null for non-existent attributes, instead of a zero-length string as in previous versions.
- fb.getOuterHTML is gone. It didn't do anything useful, except during debugging, and node.outerHTML works everywhere except in ancient Firefox.
- fb.hasAttribute is gone. Use "fb.attr( node, attrName ) !== null" instead.
- The old legacy alias fb.getElementsByClassName is gone. Use fb.select instead.
- Legacy alias of "type:img" has been dropped. Use "type:image".
- Scribd /doc/ paths are no longer automatically converted to /embed/ paths. Specify the embed path directly.
- fb.hasClass has been simplified and can check for the presence of only a single class name, not 'and/or' checks for multiple classes.
Bug Fixes
- In Webkit browsers (Chrome, Safari, Opera), Floatbox's video player would auto-start the first video shown just fine, but subsequent videos would fail to auto-start.
- The positioning of floatboxes on zoomed pages in mobile browsers was sometimes dislocated away from the visible viewport (screen area).
- ?querystrings on the href path of .mp4 videos being played in Floatbox's video player were being stripped and not sent to the server.
- Clicking on the host element of a tooltip that was opened by mouseover could close the tooltip and not allow it to open again until after a new mouseout and mouseover sequence.
- A long click (mousedown, hold for a couple of seconds, mouseup) would navigate to the linked content (instead of doing nothing or opening it in a floatbox).
v6.1.0
2015/05/22Bug Fixes
- A few problems when using a mouse on touch-capable devices:
- outsideClickCloses didn't,
- cyclePauseOnHover wouldn't,
- indexLink and popup thumbnails would remain popped down.
- WebKit browsers would scroll the main page when loading an iframe with a #id scrollTo hash on the href path.
- outsideClickCloses no longer closes on a right click - only on touches and left clicks.
- fb.addClass would cheerfully add multiples of the same class name (which isn't a problem), but fb.removeClass would have difficulty removing adjacent copies of the same class name (which is a problem).
- Slideshows in fixed-position floatboxes (boxScroll:false) could slide around during animated image transitions if the user was concurrently scrolling the page.
Enhancements & Changes
- The HTML5 player is now much better at detecting whether the browser can autostart video and will show the poster image only for ones that truly can't.
- Improved auto-measurement of HTML content height where the content contains scrollable elements.
- fb.smallScreen property added to the API for reliable detection of running on a small-screen phone.
- mailto: links will be ignored and don't need class="nofloatbox" assigned as they did previously when residing in a containing element that has the "floatbox" class.
- fb.addEvent now normalizes mouse click 'which' values for IE pre 9.
- fb.flashObject no longer supports the 'altContent' parameter. Put your altContent HTML for browsers that don't do Flash directly into the host element.
- The centerOnResize option is gone because it really didn't add value and it was impossible to keep all bugs away under all circumstances.
v6.0.4
2014/12/12 - new build2014/11/12
Bug Fixes
- (2014/12/12 update) The fix for finding hidden div content in an iframe applied only to standard floatboxed links. API fb.start calls for iframe divs were still failing.
- (2014/11/30 update) Clicks and touches inside iframes would throw an error and be ignored by Floatbox components within the iframe.
- A touch and swipe gesture on a floatboxed link or thumbnail can no longer start the associated floatbox.
- fbTooltips attached to <a> and <area> elements will not show the tooltip on a touch event so as not to interfere with the host element's normal touch/click action.
- Hidden div content would be shown only if the hidden div was on the base (main) page, and would not be found if the div resided in a child iframe.
- If no WEBM encode of a video was present when using Floatbox's built-in HTML5 player, browsers that could play both MP4 and Flash would play both those formats overtop of each other, thus duplicating the soundtrack.
- A link containing rel="nofollow" would fail to inherit the floatbox class from a containing div and so would not be activated for Floatbox behaviour.
- Zoom-starting an image from a map area was starting at 0 x 0 pixels instead of at the area size.
- The cycleEnableClick option was being ignored and a click on a cycling image would always pause or resume the cycler.
- In IE 7 (and 8?), the white background for the fbCycler play/pause control was not showing.
Enhancements & Changes
- autoEndVideo ceased working for YouTube videos because Google modified their iframe embed API such that it works only on https and not http. Floatbox v6.0.4 has changed to all https for YouTube and Vimeo interaction.
- Google has scheduled a permanent shutdown of the YouTube data API v2 for April 20, 2015. In Floatbox version 6.0.3 and earlier, addVideoThumb will cease to work for YouTube thumbnails because this was the API used to retrieve the thumbnail paths. Version 6.0.4 keeps the thumbnails going by ignoring the API and assuming a predictable path on the YouTube servers.
- The API-dependent fetching of YouTube video titles has been removed. Add captions to YouTube videos through the Floatbox caption options.
- The fb.start API function will now accept the short-form URLs for scriptomatically showing YouTube and Vimeo videos.
- Videos configured without width and height options will show in default widescreen proportions due to "height:56.25%w" being set in the typeOptions section of options.js.
- Defaults of badge=0, byline=0, portrait=0, title=0 have been added to Vimeo videos.
- When viewing scribd.com documents, show_recommendations is now set to false.
- fb.jsGet is no longer available to fb.executeJS callback functions.
- Nag screens for unregistered instance of Floatbox will appear only at page load time, on average one out of 8 loads.
v6.0.3
2014/01/01Bug Fixes
- Image cyclers would stop cycling images if the fb.activate API function was called after the cyclers had already been activated.
- "activateOnClick" was causing a few difficult problems, including de-activating various floatbox elements on click. It has been retired and is no longer available.
- Links to images and videos that used uppercase extensions in their href paths, such as ".JPG", would not be recognized as image or video type and would open as iframe content.
- If outsideClickCloses was true (which is the default for modal floatboxes) and an image shown in a floatbox had an area map assigned, clicking on one of the areas would close the box.
- Hidden div references such as "#someId" would not be found on the current page if a <base> href was active on the page.
- Video thumbnails fetched with "addVideoThumb" could be displayed at the wrong size or not at all if user css was setting "max-width: 100%;" on all <img> elements.
- fbCycler sets were ignoring the "titleAsCaption:false" option.
- "altAsCaption:true" would be ignored if "titleAsCaption:false" was set.
- YouTube videos shown in IE using the "naked" style would show a 2px border on the right and bottom edges.
- The addPlayButton option's default behaviour was adding play buttons to all thumbnails in links to video services. Now it properly defaults to adding buttons only on thumbnails created with "addVideoThumb".
Enhancements
- The fb.start function is more forgiving when passed an illegal source URI that contains unencoded ?querystring components.
- The "stickyAutoFit" option has been added back in. For image gallery sets shown with inFrameResize:false, stickyAutoFit:true will remember the current resize state and apply it to the next image in the set.
v6.0.2
2013/10/12Bug Fixes
- Hidden div content would not be found if the div's id contained a hyphen, period or colon character.
- A popup thumbnail residing inside a css-positioned element could fail to respond to mouseout and click/touch events if its opening position resulted in a negative top offset.
Enhancements
- Setting "showStartGif" to false will disable the slow-load display that shows when content is taking a long time to fetch from the network, in addition to the previous behaviour of hiding the spinning gif while a floatbox is animating in or out of existence.
- The "stickyAutoFit" option has been retired because it didn't really make sense in conjunction with the default "inFrameResize" behaviour.
v6.0.1
2013/09/12Bug Fixes
- When multiple license keys were entered into the licenseKey field in options.js, every second key would not be recognized as valid.
- In Firefox and Safari, when outsideClickCloses remained at its default of true, clicking on Flash .swf content in a floatbox would close the box.
- In Firefox the typeof operator returns a type of "function" for HTML <object> nodes. This is unhelpful and at variance with other browsers. The fb.typeOf API function has been tweaked to correct this.
v6.0.0
2013/09/03Enhancements
- Floatbox 6 includes a new HTML5 video player that supports most modern browsers and will auto-fallback to a Flash video player for the other guys.
- All the shadow background files are gone, with drop-shadows now being delivered by CSS3 box-shadows for most browsers and by VML filters for IE pre version 9. This has removed 125 small files from the deployment package and means there can be no small delay for background image fetching when starting up the first floatbox.
- The image cyclers are improved with the ability to pause and restart on mouse and touch actions. The new functionality is supported by new cycleEnableClick, cycleShowControls, cycleControlsPos and cycleStartPaused options.
- All the modules have been collapsed into a single core module, making loading more efficient. A new "compiler" and minifier are being used for the packaging with the result being greater functionality delivered in a smaller, quicker package.
- Because we're no longer using background-images, boxCornerRadius can accept any integer pixel value (and now defaults to 10 for slightly smaller default corners).
- shadowSize can also accept any integer pixel value.
- New shadowOpacity option added which allows for lighter or darker box shadows.
- The addVideoThumb option will now accept a numeric value of the thumbnail's desired display width. It can also pick up the desired dimensions from a styled blank.gif placeholder thumbnail in the host link.
- Thumbnails fetched from YouTube with the addVideoThumb option will have their ugly black horizontal bars removed.
- Cross-domain messaging has been implemented so that code running in a foreign-domain iframe can call fb.end and fb.resize and have the parent window obey the request. URI #hash modification tricks are in place so that this cross-domain messaging will work on older IE and other legacy browsers too.
- Style elements imported to a document either through type:ajax content or the fb.ajax API function will have those styles applied in all supported browsers, including IE 7 & 8 which typically don't respond to dynamically added style elements. (IE 6 will still ignore them.)
- 'silver' colorTheme added.
- The new autoEndVideo option can be used to trigger auto-closing on video completion for HTML5 video player, YouTube and Vimeo content.
- New autoEnd option instructs a floatbox to end after being up for a specified number of seconds. This option can be applied to all box types and replaces fbTooltip's old 'timeout' option.
- A new fadeTime option can be applied to any floatbox and replaces fbTooltip's old 'fadeDuration' option. (fadeTime is applied to HTML and Video content which will now quickly fade in when starting and fade out when ending, the same as images have always done.)
- A cycler set won't try to cycle to the next image until the fetch of that image over the network has completed.
- New startAt and endAt options added, making the old 'exitTo' and 'startAtClick' options obsolete.
- New autoFit option applies to all content types and replaces 'autoFitHTML', 'autoFitImages' and 'autoFitMedia'.
- Tooltips opened by a touch gesture are now positioned relative to the touch location instead of the center of the host element.
- instanceName will apply a default name of the starting link's href or source filename (without extension).
- minContentWidth and minContentHeight can now be applied to HTML and tooltip content, not just images and video.
- ~tilde~ can be used to quote option settings that contain separator characters, in addtion to using the traditional `back quotes`.
- New showStartGif option can be used to turn off the display of the spinning gif during animated box startup and ending.
- New order option added. This is a numeric option that can alter the display sequencing of images in a gallery set.
- API Library enhancements
- Management of class names on page elements can be done with the new fb.addClass, fb.removeClass and fb.hasClass functions.
- The new fb.parseJSON function will use native JSON.parse where available and a safe script parser in old browsers like IE 7.
- A new fb.iePre function replaces the old fb.ieVersion property and is easier and more natural to use.
- fb.addEvent and fb.removeEvent will accept an array of event action names to set them all (in addition to accepting an array of elements or ids).
- The fb.flashObject function can use the container element's initial content as the alternate content to show if the Flash plugin is not available.
- fb.flashObject has new success and failure callbacks that can be run after the Flash object or the alternate content has been instantiated.
- Some improvements have been made to fb.resize's handling of HTML content that is showing scrollbars.
- New fb.getByTag function is a <node>.getElementsByTagName substitute that can also return the first or last element found.
- fb.getElementsByClassName has been renamed to the easier-to-type fb.getByClass, but the old name still works too.
- The 'quick' option to the fb.resize API function has been changed to animationTime and can be used to specify a particular animation speed (including none) when resizing a box.
Bug Fixes
- infoOptions would be ignored if they were defined as a javascript object, but they were fine when present in the usual option string format.
- Cycler sets would fail to start in a paused state when cycleResumeOnHover was set to true.
- Iframe content could be fetched twice by some browsers when it was being loaded into a floatbox.
- A cycleInterval assigned to an individual image in a cycle set would get applied to the subsequent image instead of to the assigned image.
- A timer delay has been inserted just before commencement of animated image transitions and the order of assigning src attributes to img elements has been modified. This seems to have reduced the odd random occurence of browsers (mostly Firefox and IE8) delaying the rendering of the new image.
- Size changes made in custom.css for control background images were being applied to all color themes and not just to 'custom' themed boxes.
- Iframe content would auto-resize on first navigation within the iframe, but not on subsequent internal navigation. It should now reliably resize itself each time a page refresh or navigation occurs in it.
- Mobile Safari would invoke its popup blocker for scrollable iframe content that was trying to start in a new browser instance.
- Some browsers would shift the base page left a little bit when the 'removeScrollbars' option (now named 'pageScroll') was applied.
Changes
- Support for QuickTime, Windows Media Player and Silverlight has been removed because browser plugins are a bad idea, don't work very well and should just fade away. (Support for Flash .swf files is still in the package.)
- The minFlashVersion default has changed to '9.0.115' because this is the earliest Flash version that supports playback of .mp4 video.
- fb.addEvent no longer does special handling for DOMContentLoaded in older browsers. Use fb.DOMReady for document-ready functions.
- The 'showIE6EndOfLife' option and functionality is gone. There's an implementation of it on the 'Hi-Tech' tab of the demo page if you want to use that on your site.
- The 'afterFBLoaded' event callback can no longer be set in fbPageOptions within child iframe windows — it can be set only on the top document.
- fb.flashObject will no longer accept multiple individual parameters. It will only recognize the single object parameter with named members as detailed in the API reference.
- The 'fb.cycleGo' and and 'fb.cycleStop' API functions are gone. In the unlikely event that anyone was using these, look into the new cycleEnableClick capabilities instead.
- The 'defaultCursor' option for enhanced tooltips is now retired. This was setting styles on base document elements and properly belongs in the page or site css.
- hideObjects now defaults to false for tooltips and context boxes.
- The default zIndex value has changed from 11111111 to 77777.
- Default behaviour for scrollable iframes is to open in a new window on mobile Safari (because its iframe scrolling is really bad) but render in a floatbox on other touch devices.
- The bundled gzip files of Floatbox's js and css files have been moved into their own folder in the distribution package. Retrieve them from there if you have configured your server to serve them.
- To enhance accesible usability and compliance, all Floatbox controls now have invisible language-localized strings in them describing their function for screen-readers.
- 'fbChildOptions' (and 'childOptions' in the options.js file) are gone. There's a childBox classOption set in options.js that can be used in its place.
- Old options.js files that use fb.proto are no longer supported or recognized.
- The following API functions and properties are no longer available:
- getScrollLeft → use fb.getScroll
- getScrollTop → use fb.getScroll
- getViewportHeight → use fb.getViewport
- getViewportWidth → use fb.getViewport
- ieVersion → use fb.iePre
- lastChild, topBox, lastInstance, topInstance → use instanceName and fb.getInstance, fb.getOwnerInstance, or the instances array.
- itemCount, currentIndex → they're just gone with no replacement.
- Some options have undergone a name change and some a functionality change.
There's also a lot of redundant legacy option names that have been carried forward from old version of Floatbox,
but are being dropped in this transition to version 6.
- overlayFadeDuration → use overlayFadeTime
- fadeDuration → use fadeTime
- resizeDuration → use resizeTime
- transitionDuration & imageFadeDuration → use transitionTime
- cycleFadeDuration → use cycleFadeTime
- scrolling → use contentScroll
- disableScroll → use boxScroll
- removeScrollbars → use pageScroll
- endTask → use afterSlideshow
- closeOnClick, imageClickCloses and contextClickCloses → use contentClickCloses
- youtubeAutoEnd → use autoEndVideo
- timeout → use autoEnd
- startAtClick → use startAt
- exitTo → use endAt
- roundCorners → use boxRoundCorners
- cornerRadius → use boxCornerRadius
- dropShadow → use shadowType
- crossFadeImages → use imageTransition
- zoomImageStart, zoomImages → use zoomSource:null to disable zooming up from thumbnails.
- autoSizeImages, autoFitOther, autoSizeOther, autoFitHTML, autoFitImages, autoFitMedia → use autoFit
- enableDrag → use enableDragMove
- graphicsType → use controlsType
- indexLinksPos → use indexPos
- theme, colorImages, colorMedia, colorVideo, colorHTML → use colorTheme
- mainColor → use boxColor
- backgroundColor → use contentBackgroundColor
- appendToForm → use attachTo
- resizeImages → use enableImageResize
- hideFlash → use hideObjects
- upperNavWidth → use navOverlayWidth
- upperNavPos → use navOverlayPos
- preloadAll → use preloadLimit
- timeout → use autoEnd
- autoTypes → assign 'nofloatbox' class instead
- typeSettings for 'context' → use classSettings['fbContext']
- typeSettings for 'tooltip' → use classSettings['fbTooltip']
- loadPageOnClose:this → use loadPageOnClose:self
- navType:upper, navType:lower → use navType:overlay & navType:button
- showNavOverlay:always → use showNavOverlay:true
- type:img → use type:image
- showHints:never → use showHints:false
v5.7.2
2013/02/11Enhancements
- The beforePrint callback is now fired after the print window has been constructed and the callback receives a reference to the new window as its only parameter. This allows the callback to perform processing such as drawing canvas elements on the printable content prior to the print dialog being invoked.
- The fb.resize API function will now allow a resized floatbox's position to be held static on the screen by passing -1 as the left and/or top paramters.
- enableSwipeNav now applies only to touch swipe gestures. A mouse swipe (or drag) on image content will move the floatbox if 'enableDragMove' is true.
- A running slideshow will pause on any user input such as navigation, image resizing, viewing 'Info...' links, etc.
- If explicit new dimensions are passed in to fb.resize() for image or video content, subsequent floatbox resizing will be based on these new dimensions rather than the content's original native dimensions.
- The fb.reload() API function will now invoke proper sizing and transition animations when loading or refreshing content.
- All built-in support for videos from dailymotion.com has been removed from the code (not really an enhancement).
Bug Fix (2013-02-12 build)
- A floatbox (incuding tooltip boxes) that had 'controlsPos:tr' set would create room for the controls in the top frame area even if no controls were being shown.
v5.7.1
2013/01/26Bug Fixes
- On fbTooltipped elements that contained child elements, the tooltip could quickly close and re-open when a mouse move transitted the child element boundary. Rapidly moving over an adjacent series of such elements could resulte in a tooltip not opening or an open tooltip being orphaned and stuck open.
- Some Flash objects that were instantiated using SWFObject and hidden by Floatbox's hideObjects:true setting would fail to unhide in non-IE browsers.
- The indexLink 'pip' (picture-in-picture) thumbs would always show in the bottom-right corner regardless of which corner the index links were assigned to by the 'indexPos' option.
- For index link thumbnails, maxIndexThumbSize was ignored if pipIndexThumbs was set to false.
- The lower panel area of a floatbox frame could display at the wrong height in IE6.
v5.7.0
2013/01/12Bug Fixes
- Could not tab between input elements in a form that was loaded from a hidden div. This was a problem introduced by the accessible tab-browsing support added in version 5.6.0.
- Another problem arising from 5.6.0 tab-browsing: If an enhanced tooltip had a clickable floatbox link in it and the host element was clicked while the tooltip was open, subsequently clicking on the link in the tooltip would fail to start a new floatbox.
- IE7 could fail to correctly measure and auto-size the height of iframe content because it is a buggy and stupid browser.
- The floatbox could fail to close when showing image content in Chrome with page zoom set above 100%.
- Upon completion of viewing a second YouTube iframe video (without doing a base page refresh between viewings), the floatbox would fail to auto-close.
- HTML elements placed in the infoText option could interfere with the opening of the secondary 'Info...' floatbox.
- A floatbox starting from an activated link in an enhanced tooltip would start from the center of the screen, rather than from the click/touch location.
- If the fb.getElementsByClassName API library function was called with an array of class names and a node parameter, the returned elements would not be restricted to children of the root node but would include all elements in the document that have the requested class names.
Enhancements
- The 'slide' transition effect assigned by the imageTransition option has changed. It will now slide a gallery set's departing image out of the box and reveal a stationary next image underneath it. Most people will probably find this to be a more pleasing transition than the previous 'slide' setting introduced in version 5.5.0 which simultaneously shifts the old image out and the new image in. The old 'slide' effect is still available by assigning 'shift' to the imageTransition option.
- In IE, all versions, the YouTube iframe video player shows an ugly outline around the video when it is clicked. Floatbox now hides this outline.
- Previously, navType:overlay was not available for gallery sets that contained one or more non-image member. Now the overlay navigation is available for any images in the set and is disabled when showing interactive html or multimedia content.
- Navigating a gallery set of images by using touch-swipe gestures was added in 5.6.0 but the enableSwipeNav (true|false) that controls this was not documented.
v5.6.1
2012/12/27Bug Fixes
- Some configurations of index links on gallery sets (numIndexLinks set to non-zero) would throw an error and render the floatbox controls inoperative.
v5.6.0
2012/12/15Enhancements
- User interface improvements:
- Floatbox's accessibility behaviour is enhanced by the addition of proper 'tab' browsing. The tab key will cycle through and highlight the active floatbox controls, and will skip the links on the main page while a modal floatbox is open.
- To accommodate tab-browsing, the keyboard shortcut for image resizing has been moved from 'tab' to page-up and down (cmd or fn + up/down on Macs that don't have page up/down keys).
- Can navigate through a gallery set with touch-swipe gestures on the displayed image. A swipe to the left shows the next image, to the right shows the previous. A standard mouse with the main button held down can also be used as a swipe gesture source. (Note: A floatbox can no longer be drag-moved by mouse or touch actions on the content but now only on the surrounding frame area.)
- Touch dragging/scrolling on an activated link in the main document will no longer start the associated floatbox on touch release.
- The showMoveCursor option has been improved. The move cursor will now appear over caption and other text elements by which a floatbox can be drag-moved.
- On touch devices, an auto-sized image can be resized by touching it. Previously resizing was done on mouse-click, but not on touch.
- Popup thumbnails that are opened by a touch gesture rather than mouseover can be closed by touching anywhere else on the document or by pressing the 'esc' key.
- There were a couple of reports of floatboxed links navigating to a blank page when clicked, but this could not be replicated. However, the new input handling routines should make such behaviour impossible.
- Option preferences can now be assigned to tooltips and context boxes by class-based options set in the classOptions section of options.js or in an fbClassOptions definition on the page.
- The size of floatbox.css has been drastically reduced by moving colorTheme adjustments and mouseover highlighting into the code.
- 'allowFullScreen' is now set on all content iframes. This enables the full-screen functionality of YouTube videos shown in HTML5 video mode.
- The 'showNavOverlay' accepts a new value of 'auto', which is the new default. This will show the overlayed prev/next widgets if the button style prev/next controls are not present, otherwise the overlayed controls won't show and the buttons will highlight at the appropriate time.
- The 'indexLinksPos' option's name has been changed to 'indexPos'. (The old name still works.)
- There is a new API function, fb.attr(), that can be used to read, set or remove attributes from elements.
- The fb.typeOf() API function can now identify regular expressions and return the value 'regexp' for them.
- The fb.getElementsByClassName() API function can accept an id string in addtion to a node reference as its optional base-node parameter.
Bug Fixes
- Loading same-domain iframe content in an existing floatbox by using the 'sameBox' option or 'goBack' function could sometimes scramble IE's wee brain and would attempt a harmless but wrong second fetch of the existing box content in other browsers.
- Iframe content could fail to load on some instances of IE 7 (and possibly IE 6 too) running on Windows XP.
- Yet more IE 7 trouble: The floatbox could appear underneath page elements that had a z-index assigned.
- Setting 'enableWrap' to false for a gallery set would affect only mouse and touch input. The keyboard handler would still allow wrapping to the beginning or end of the set with the arrow keys.
- A slideshow that was started in a paused state would not get the first image registered as seen. This would cause the slideshow to show that first image again before initiating the 'exit' behaviour at the end of the show.
- Inline hidden div content that was shown as a member of a gallery set could fail to display on a second request when navigating back through the set items.
- The '404 not found' image, shown when a gallery set contains a bad href path, was being displayed with distorted dimensions.
- Hidden div content could fail to display when running a page directly from the file system on Windows XP.
v5.5.0
2012/10/27Heads Up!
- The floatbox.css file has changed radically to avoid problems that were occurring due to duplicate IDs when multiple boxes were open. Any custom css used to style floatboxes in previous versions will likely not work against this version.
- The CSS for the 'custom' colorTheme is split off into a new file. If you use the custom colorTheme, you must explicitly add an include line to your pages for 'custom.css' immediately below your existing include line for 'floatbox.css'. Custom colorTheme settings from previous versions cannot be carried over into the new CSS as the floatbox element classes and ids have changed.
Enhancements
- Round corners can now be added directly to the floatbox content div in addition to the corners placed on the outer box frame. To support this, two new options, 'contentRoundCorners' and 'contentCornerRadius', have been added and the old 'roundCorners' and 'cornerRadius' options have changed their names to 'boxRoundCorners' and 'boxCornerRadius'. (The content round corners are not available for IE versions 8 and earlier.)
- New ability to slide images in from the left of a floatbox in a gallery set. A new option, 'imageTransition' has been added to support this, and the old 'crossFadeImages' option is now deprecated.
- Resizing and transition animations are now 'eased', meaning they go slower at the beginning and end and faster in the middle, resulting in softer, gentler transitions.
- The 'imageFadeDuration' option has been deprecated and replaced with a new 'transitionDuration' option that also applies to non-image content in a gallery set.
- 'minContentWidth' and 'minContentHeight' now apply only to images and videos shown in standard floatboxes and will not apply to tooltips or context boxes.
- Two new properties, 'itemCount' and 'currentIndex', are exposed to the API to faciltate programming custom navigation widgets. See the API Reference for details.
- External scripts launched using the fb.executeJS API function now have access to a javascript object named 'fb.jsGet' which contains any parameters passed on the querystring. For example, a script invoked with fb.executeJS('myScript.js?foo=bar') can retrieve the value 'bar' from fb.jsGet['foo'].
- The 'loadPageOnClose' option will not fire when a tooltip or context box closes.
Bug Fixes
- When loading a same-domain iframe using an href that includes a #hash portion, the iframed page is supposed to scroll to the element that has the hash id on it. This did not always work.
- Tooltips assigned to an anchor element that contained an img thumbnail could fail to open on mouseover of the upper portion of the thumbnail.
- Tooltips and context boxes that had their content defined in a hidden div within an child iframe or frame element would fail to find the hidden div and so refuse to open.
- Tooltips have returned to using DOM2 event handlers so as not to interfere with 'onmouseover' and 'onmouseout' handlers that might already be assigned to the host element.
- Tooltips attached to an element that was part of the HTML content shown in an open floatbox could fail to open on mouseover and could open in the wrong screen location.
- YouTube iframe video embeds loaded into a secondary floatbox would sometimes write their video content to both of the open floatboxes' fbContent elements.
- Iframe content loaded into a secondary floatbox (such as an "Info..." link) would rapidly flash on and off for a while after loading.
- Calling fb.end('self') would fail to refresh the base page, and would instead try to navigate to a page called 'self'.
- Requests to autoStart an item made by placing a querystring of something like "?autoStart=xyz.jpg" on a page's location URL would fail.
v5.4.1
2012/09/23Bug Fixes
- A tooltip could freeze on the screen and fail to close if the mouse was moved rapidly between adjacent elements that both have tooltips assigned to them.
- Very large tooltips that extended past the viewport edge and neeeded to have their position shifted such that they would cover the host element could flicker on and off a few time when starting in Firefox.
- Popup thumbnails that resided somewhere inside a positioned element would popup in the wrong location. This included index link thumbnails when pipIndexThumbs was set to false.
- Iframe-based video embeds hidden by the hideObjects option would fail to unhide in IE.
- Same-domain iframe content reloaded into a floatbox either from navigation within the iframed page or from a sameBox presentation of a new content page would load and measure the new page twice.
- The removeScrollbars option should now avoid lateral page shifting when being applied on pages with a margin set on the html element.
- Mixed type gallery sets that included both images and iframe items would fall apart when navigating between items in the set.
- The legacy option 'theme' was not being recognized as a valid alternate for 'colorTheme'.
Enhancements
- Support for documents served from the scribd.com service has been enhanced. Scribd documents will now be loaded using their iframe-based embedded format, similar to how YouTube, Vimeo and DailyMotion are handled for video content.
- The preloadLimit option will accept two values separated by a '|' character. The left side is for desktops and the right side is for touch devices. The default is '5|1'.
- There are now much fewer permission warnings generated when doing x-domain checks, making working with Firebug easier.
v5.4.0
2012/09/15Enhancements
- Animations (resizing and opacity fades) have been recoded to synchronize better with standard monitor refresh rates, avoid race conditions on fast hardware, and place less demand on the CPU.
- Cyclers can now pick up their captions from the img element's title attribute when titleAsCaption is true or from the img's alt attribute when altAsCaption is true. They will of course continue to pick up captions from associated span elements as was done in previous versions.
- Control widgets will usually remain visible during the animations between gallery set item changes.
- 'classOptions' in options.js and 'fbClassOptions' on the page can now be used to assign options to enhanced tooltips and context boxes, in addition to standard floatboxes, based on assigned class names.
- A #hash on iframe content's source href will cause the floatbox to scroll to the position of the corresponding element in the content when opened.
- The showIE6EndOfLife option will be ignored and the IE6 update screen will not be displayed after Jan. 1, 2014.
- Video info fetched from online video services at page load time is cached and will not be refetched again when fb.activate() is run.
- Options:
- A new useMap option has been added. This can be used to assign an area-map to an image shown in a floatbox. The area coordinates will automatically scale with the image when it is resized by any method. The area map can be used to assign tooltips to portions of the image, or to open secondary floatboxes from the image areas.
- mobileDoAnimations has been added and defaults to false. This determines whether the fade and resize animations will occur on small screen devices. ('doAnimations' determines animation behaviour for large screen devices.)
- A new showOnce option has been added for use with enhanced tooltips. If set to true, the tooltip will be shown only once per browser session.
- showMoveCursor has been added, which if set to true, will cause the browser's 'move' cursor to show when a mouse is hovered over a portion of the floatbox by which it can be drag-moved.
- A new fetchVideoInfo option has been added which can be set to false to turn off the network fetches of video information from the YouTube, Vimeo and DailyMotion API services.
- The new option altAsCaption, if set to true, will pull a caption from a thumbnail's alt attribute if the caption has not been set through the 'caption' option or the 'titleAsCaption' option.
- A new option, closeOnClick, merges the functionality of the old 'imageClickCloses' and 'contextCloseOnClick'. It defaults to false and can be used with most content types.
- New minBoxWidth and minBoxHeight options have been added. These accept values in pixels, a percentage of the screen size, or 'max', and can be used to set the outer frame area to a static large size while the content area inside changes dimensions on gallery set changes.
- New boxLeftAdjust and boxTopAdjust options can be used to fine-tune the positioning of a floatbox. Wherever the box would open normally, it will be shifted by these amounts from that location.
- The new instanceName option can be used in conjunction with the fb.getInstance API function to get a reference to a floatbox based on its name.
- The 'preloadAll' option has been replaced with preloadLimit, a number, which sets how many images will be pre-loaded at page load time and which defaults to 1 for touch devices and 5 for non-touch clients.
- The existing 'minContentWidth' and 'minContentHeight' options are now enforced under all circumstances, preventing very small and/or auto-sized image and video content from being presented at less than these dimensions.
- 'boxLeft' and 'boxTop' can be assigned per item and will take effect on each content change in a gallery set.
- 'loadPageOnClose' would previously do that only if the last (or only) floatbox was closing. Now it will navigate the host page regardless of whether other floatboxes are still open.
- API:
- The fb.resize function has been extended to add 'left', 'top' and 'quick' parameters, which allow for setting position as well as size, and for disabling animations during the resizing and/or repositioning. See the API Reference for usage details.
- A new function, fb.getInstance, has been added to the API and the option 'instanceName' added to the options. Combining these two allows for naming a floatbox instance and the retrieving a reference to that floatbox using its name when multiple floatboxes are open simultaneously.
- The fb.end function can no longer accept an instance index to close a particular floatbox when more than one is open. See the 'Multiple Floatboxes' section of the API for information about how to address a particular floatbox. I don't think anyone was using fb.end in this fashion, but you are, this will be breaking change that will require modification of your code.
- The fb.addEvent function's handling of DOM0 events (on*) has been enhanced to guarantee that the handler will receive a single parameter of the event object, that the 'target' property of that event object will be properly set, and that the 'this' keyword will reference the element that the handler is attached to - the same things that have always been available to the DOM2 event handlers.
- fb.addEvent will accept an array of elements as its 'node' parameter to allow the same handler to be set on multiple elements in one call.
- The fb.$ function now has a second parameter available - 'doc' - which can be used to reference a particular document to look for the desired element on (where one or more child frames are on the page).
- The afterResize callback now fires whenever the content changes size for whatever reason, and not just when fb.resize() is called from code. This includes when the content first opens, when it is resized to full-size or back down to fit the screen, when it is resized by mouse drag, and when it resizes in response to the 'centerOnResize' option.
- The fb.forEach function now has a third boolean parameter, 'all', which will instruct the function to skip its 'hasOwnProperty' check and to execute against all object members, whether they are 'owned' or not.
- Added 'date' as a recognized type and return value for the fb.typeOf function.
- The fb.deserialize function now first runs the passed string through the fb.decodeHTML function to resolve HTML entity codes such as & and <, etc.
- All API functions that accept a node id as a parameter will now accept that id with a leading '#' character as well. E.g., 'example' and '#example' will both work.
- The API Reference document has been re-organized, clarified and simplified.
Bug Fixes
- Controls like previous, next and close would not work in Chrome running on Android. The click/touch events were not firing in that browser.
- A very large gallery set could consume all memory and cause browser failure due to all preloaded images being retained in both physical memory and the browser cache.
- Direct HTML content could fail to auto-measure correctly. This included the IE6 end-of-life message which was failing to size correctly and would not show the browser choices.
- Things could look strange if fb.end() was invoked in the middle of an animated gallery set item changeover. Now execution of the end request is deferred until the current animation finishes.
- When a gallery set contained an inline (hidden div) item as one of its members, the previous and next buttons would get the 'off' state background graphic assigned and so would appear greyed out.
- The 'exitTo' option, which instructs the floatbox to animate down to a specific element on the host page, was not working.
- When 'shadowType' was set to 'none', image preloading would not start until after a floatbox was opened.
- Attempting to defeat autoplay of videos from online video services by placing "?autoplay=0" on the URL's query string would fail and the videos would still start automatically.
- Resizing and repositioning in response to browser window size changes was unnecessarily jerky because the changes were being animated rather than done instantly in one step.
- An API call of fb.getStyle(node) without a property request would fail to return the list of all styles in IE9.
v5.3.4
2012/05/26Bug Fixes
- IE 6 and 7 were showing ugly focus outlines around the main floatbox element in v5.3.3.
- Unpleasant page and floatbox positioning jumps would occur if the page was scrolled between views of different items in a gallery set in v5.3.3.
- Enhanced tooltips would stop working after an fb.activate() API call.
Enhancements
- Small-screen devices such as the iPhone now default to 'controlsType:international' instead of the small English-language controls.
v5.3.3
2012/05/24Enhancements
- The fb.resize() API function has changed. The parameters make more sense now. A positive integer sets a particular size, 0 triggers re-measuring and auto-setting of a dimension, and -1 locks a dimension to its current value.
- The fb.resize function now obeys the autoFitHTML, autoFitImages and autoFitVideo settings. It will adjust the floatbox to fit the viewport if appropriate.
- As a consequence of the fb.resize changes, now when same-domain iframe content changes and triggers a floatbox re-measure and re-sizing the new sizing will auto-fit the screen if 'autoFitHTML' is true (which is its default value).
- A same-domain iframe floatbox that is being re-measured and sized due to content change can now have its width adjusted, in addition to height, if no specific width was provided in the options.
- The default zIndex setting has changed from 90000 to 11111111 to get above the Google Translate bar.
Bug Fixes
- Scrollbars could not be detected on Webkit-based browsers (Safari and Chrome) running on Mac OS X, causing scrollable iframe content to open in a new browser window on those platforms.
- Scrollbars could not be detected on Webkit-based browsers (Safari and Chrome) running on Mac OS X, causing scrollable iframe content to open in a new browser window on those platforms.
- An fbContext box containing same-domain iframe content would fail to close on mouse click or touch gesture when contextCloseOnClick was set to true (its default value).
- Iframe content that contained only plain text in the body, and no child elements, could not be measured and auto-sized.
- When a css position style of 'relative', 'absolute', or 'fixed' was assigned to the body element, and the body element was offset from "0,0", the opening position of a floatbox could be off by that body offset amount.
- On iOS 5+ devices, a floatbox being opened from the right-hand side of the visible screen could trigger a small scaling of the underlying page.
- The screen position of a floatbox could be wrong if the 'attachTo' option was set on a page with positioned elements, or if the Google Translate widget was present and active.
- Floatbox would fail to start a gallery set if index links with thumbnails were requested (i.e., 'numIndexLinks' was not 0 and 'showIndexThumbs' was true) and one or more of the anchors in the set did not have a thumbnail image element inside it.
- When displaying floatboxes that were taller than the screen height, the underlying page could scroll down slightly at each box opening.
v5.3.2
2012/05/02Bug Fixes
- Same domain iframe content would fail to load if no height was specified and the Floatbox files were being served from a different domain than the host page.
- Vimeo's API service is returning height and width values as strings instead of integers for recently uploaded videos. This would cause Floatbox to set a zero box height, which of course would make the video unviewable. Floatbox now handles the new string values.
- Tooltips would jump to the wrong position if moveWithMouse was set to true and the host page was scrolled.
- If two tooltip host elements were right beside each other and the mouse moved rapidly from one to the other, the second tooltip could fail to open.
v5.3.1
2012/04/30Bug Fixes
- Iframe and AJAX content could fail to open if the completion of their fetch from the network occurred somewhere between 750 and 1500 msecs after the initiating click. The slow-load display would be in the process of opening at that point, and would interfere with the opening of the content.
- IE8 running in IE7 compatability mode could mismeasure HTML content height and set the floatbox height too small.
- Could not invoke media files from an fb.start command if there were no anchor elements of floatboxed video links on the page. (The media module would not get loaded.)
- The node pointers defined directly on the fb object, such as fb.fbContent, would not get removed when a floatbox was closed. This could possibly contribute to memory leakage in IE.
Enhancements
- 'autoEndVideo' now applies to YouTube video iframe embeds too (but doesn't work in IE pre version 9).
- YouTube embeds (both flash and iframe) now auto-hide the control bar. This helps proportional resizing of the floatbox and avoids small black bars when the video is resized.
- The indexThumbSource option can now be set to 'href' to use the image referenced in the host anchor's href attribute as the index thumb image. This can be handy for empty anchors in a gallery set. You probably want to use maxIndexThumbSize when using 'href'.
Changes
- The return values from the fb.getLayout API function have changed! The function used to return document coordinates but now returns screen coordinates. To get document coordinates, add the current scroll values to the screen coordinates.
- Drawing round corners using canvas in old browsers has been removed because the drawing routines would sometimes fail when running on some new hardware. Firefox 3.x and Safari 4.x will now use proprietary css round corner syntax, but Opera prior to v10.5 will fall back to square corners.
v5.3.0
2012/04/19Enhancements
- Floatbox now has much broader mobile touch device support, including distinction between large and small screen devices, rather than targetting iOS Mobile Safari directly.
- Measuring and setting of same-domain iframe content height is now done prior to the content being shown so as to avoid the floatbox opening to one height and then immediately resizing to another. Now it will open straight to its final height.
- YouTube and Vimeo content direct-loaded as type:flash will offer an alternate content link to the video on the YouTube or Vimeo site to visitors that don't have Flash but do have HTML5 video support.
- Module file names now include the version number and the modules are no longer loaded using a querystring obtained from floatbox.js. This will help avoid stale cached files when upgrading Floatbox versions.
- enableKeyboardNav can now be set per box so that if there are multiple floatboxes open, keyboard shortcuts can be available in one box and not the others.
- Flash content will default to wmode=transparent if contentBackgroundColor is set to transparent (as it now is when the 'transparent' class name is assigned).
- The boxLeft and boxTop options will now accept a setting of 'click' to instruct the floatbox to open at the mouse click or touch gesture location (like context boxes do).
- The mobileNewWindow option now applies to devices with small screens rather than only to devices running Mobile Safari.
- When fbContext is assigned to <area> elements, IE 8 and 9 will focus those elements on mouseover so that right-click behaviour will fire reliably.
- fb.stopEvent now accepts two additional optional arguments, stopPropagation and preventDefault, that give fine-grained control over these aspects of event handling.
- fb.flashObject will now accept flash params as name=value pairs on the source path's ?querystring as well as from the params argument.
- PDF content is now opened as an iframe element rather than direct-loaded with installed plugins. This allows more flexibility around browser variations. Browsers that are capable of displaying PDF documents will render them in the floatbox while browsers that can't show them will offer to download the file.
- The following callback functions are now passed a parameter of the calling instance to give the executing callback easy access to the floatbox and its content: beforeItemStart, afterBoxStart, afterItemStart, beforeItemEnd, beforeBoxEnd, and afterResize.
- The tooltip timeout timer now starts counting from when the tooltip is displayed rather than from the mouseover action. This makes a difference with slow-loading tooltip content.
- A closing floatbox that has been scrolled off-screen will not animate out, it will just quickly disappear.
- Really big floatboxes will now do animated resizes much more quickly.
- Multiple license keys can be specified in options.js, or fbPageOptions, by separating the keys with spaces or commas. This is to facilitate serving the Floatbox files from a centralized server to multiple registered web sites, which required a custom-built multi-site license key in previous Floatbox versions.
- Activation based on other lightboxes' markup in the rel attribute can be overridden with 'nofloatbox' in an anchor's class attribute.
- fb.mobile and fb.click have been removed from the API because they never should have been there in the first place, it's likely nobody uses them, and I don't think it's a good use of my time to maintain and support them.
- Some new defensive CSS styles are now applied to the floatbox components:
- Img elements are set to 'display:inline' so that user-applied styles of 'display:block' won't disrupt the overlayed navigation panels.
- Transition durations are set to '0s' for all floatbox elements to prevent css transitions from animating the sprite background change of controls such as the close buttons when they are hovered.
Bug Fixes
- IE7 running on an XP system prior to Service Pack 3 and not staying current with Windows Updates security patches would crash during floatbox initialization due to an internal javascript engine bug on that old platform.
- YouTube iframe embeds were failing to hide in response to 'hideObjects:true'. Now YouTube, Vimeo and DailyMotion iframe embeds will all hide.
- The hrefs for the prev and next links in a gallery set were incorrectly set to point to the current image instead of the previous and next images. A side-effect of this was that the next image would not preload as it should after a gallery set image was shown.
- contentBackgroundColor was not set to 'transparent' for the transparent class options in options.js, causing html content to display with a white background.
- Tooltips, cyclers and contexts defined inside hidden div floatbox content could fail to function if the floatbox was started early with 'autoStart:true'.
- Tooltips and contexts could open in the wrong location on scrolled pages on touch devices.
- IE 8 fires window.onresize any time a scrollbar appears or is removed from a page. This could mess up auto-setting of iframe content height when centerOnResize was active.
- Index links would fail if showIndexThumbs was at its default of 'true' and the links that comprise a gallery set contained no thumbnail img elements.
- Setting caption:null would fail to override a caption being pulled in from an online video service's API.
- A long-standing irritant of IE sometimes displaying a message like "This website wants to run the following add-on: Windows Media Player Extension..." has been eliminated. The message was being triggered by Floatbox looking for an old version of WMP while querying IE for which activeX add-ons are installed.
v5.2.1
2012/02/16Bug Fixes
- Tab, spacebar and arrow keys could not be used to edit input fields in forms shown in a floatbox.
- Not really a bug, but it is no longer possible to append a grouping postfix to the 'floatbox' class name.
v5.2.0
2012/02/11Enhancements
- A new 'crossFadeImages' option and associated behaviour has been added which will transition between gallery set images with an overlayed fade in and out of the old and new images (similar to an fbCycler set) instead of fading to black between images. The default setting for this option is 'true'.
- New 'fbContext' class added that will open a context-menu-like floatbox on left and/or right clicks (or touch gestures). Two supporting options, 'contextMouseButton' and 'contextCloseOnClick', have been added.
- The 'centerOnResize:true' behaviour now resizes the floatbox in addition to just centering it whenever the browser window size changes (provided the appropriate autoFit* option is set, which they are by default).
- Three new sets of pre-defined classOptions have been added to the options.js file, 'alt', 'transparent' and 'naked' which can be used to easily change Floatbox's appearance.
- The 'titleAsCaption' option has been given two new allowed values, 'a' and 'img', which instruct Floatbox to pick up captions from title attributes only on the anchor element or only on the contained thumbnail image respectively.
- The 'floatboxClass' option can accept a list of class names separated by the '|' character to help CMS systems that can assign only one class name to an element.
- 'autoEndVideo:true' is ignored if the video being shown is a member of a multi-item gallery set.
- The 'pauseOnPrev', 'pauseOnNext', and 'pauseOnResize' slideshow options have been retired. The new behaviour is to re-start the slideshow's 'next image' timer on each of these events.
- The default for 'contentBackgroundColor' is now transparent for image, media and iframe content.
- The 'resizeImages' option has changed its name to 'enableImageResize' to better match what it does. The old option name still works too.
- The 'splitResize' option has dropped the 'wh' and 'hw' settings and will choose the optimal resizing order based on content dimensions.
- Tooltip options can be set globally in options.js or fbPageOptions and have been added to the configurator.
- A new 'allowCrossDomain' parameter has been added to the API's fb.getIframeWindow function to allow retrieval of cross-domain window objects for HTML5 postMessage usage.
- An fb.click object has been added to the API which gives the x and y coordinates and target element of the last mouse click relative to the main document's viewport. See the API Reference for details.
- The fb.typeOf API function will return 'NaN' for values that match Number.NaN.
- The API's fb.mobile flag will recognize a Kindle Fire in Silk mode as a Mobile Safari based device.
- A complete code review was undertaken resulting in a lot of code efficiency improvements - a little bit smaller, faster and simpler.
Bug Fixes
- Gallery sets of multiple items would not behave properly if a new item was instantiated using the 'sameBox:true' option or if the goBack() function was called.
- The 'afterBoxStart' callback was firing too early, before the box was up.
- In a gallery set containing HTML content, the value of the 'scrolling' option was assigned to all items based on the opening item and would not be recognized on a per-item basis.
- A gallery set moving from a media item to a non-iframe HTML item would just show white on white for the new HTML item.
- IE 7 would show outlines around the floatbox controls when they were clicked.
- Fixed miscellaneous image fade failures on first and last items in a gallery set. The problems occurred only when the images weren't 'zooming' in and out from thumbnails.
- The "404 not found" image that is shown when a request is made to load a non-existent image would display at tiny dimensions.
- Setting the following options globally in options.js or fbPageOptions could fail: caption, caption2, info, showPrint, showNewWindow, header, footer
- AJAX content could fail to display if the attachTo option was referencing an element type that can't legally contain block elements.
v5.1.0
2011/12/27Enhancements
- New 'cycleResumeOnHover' option inverts the behaviour of the cyclePauseOnHover option. If cycleResumeOnHover is set to true, a cycler will start in a paused state and will cycle only when the mouse is hovered over the images.
- A new item-specific option, 'indexThumbSource', has been added. This can be used for specifying an index link thumbnail where there is no associated thumbnail defined on the main page, or for specifying an alternate thumbnail to be used instead of the one on the main page.
- Tooltips that use an iframe source (external page) for their content can now measure and auto-set the tooltip height in the same manner as is done for standard iframe-content floatboxes.
- When titleAsCaption is set, Floatbox will now pick up the caption from a title attribute on a thumbnail img element if no title is set on the anchor element.
Bug Fixes
- The configurator would fail to show some options in the options.js or fbPageOptions text if those options were already previously set globabally.
- A mouse click on quicktime content on a Mac could "stick" and the floatbox could move around with subsequent mouse moves.
- Uneeded horizontal scrollbars could appear on html content that should have be shown with only a vertical scrollbar.
- An attempt to open two floatboxes simultaneously using the API fb.start function would fail unless all box animations were turned off.
- maxIndexThumbSize would not take effect in IE where a thumbnail image or a containing element was styled with display:none.
- Floatboxed items opened from a cycler set were suppose to pick up captions from the cycler set's span elements, but this wasn't working. Now it is.
- Vertical alignment of the controls (close, prev, next, etc.) would be off after drag-resizing a floatbox to such a small size that the caption would get removed.
- Unable to 'zoom' an image from a thumbnail that was placed right at the top or left edge of a page.
v5.0.2
2011/11/13Bug Fixes
- A gallery set loaded as type:ajax could contain duplicates of each gallery set member.
- showMagCursor:once was broken. It would show the mag cursor on every thumb mouse-over.
v5.0.1
2011/11/09Bug Fixes
- The autoTypes option was broken and would have no effect.
- QuickTime wouldn't show in IE9.
- boxColor gradient settings using low value (dark) colors could crash Floatbox in IE pre version 9.
- Couldn't merge floatbox.js and options.js into a single file.
- Firefox could briefly flash the broken image icon when starting the zoom-in effect.
- Vevo embed wouldn't show in Firefox and Chrome and wouldn't auto-start in IE8.
- The Options Reference was wrong about being able to use boxColor gradients such as "red|green". The colors must be specified in hex format: e.g., "#FF0000|#00FF00".
v5.0.0
2011/10/19Note:
Version 5 is an almost complete rewrite of Floatbox with a brand new code and data architecture. Backward compatibility with markup and code from previous versions has been largely maintained. Nevertheless, if you are upgrading from a previous version it would be prudent to carefully review the changes listed below and to throughly test all your existing content.Enhancements
- Options:
- New 'inFrameResize' option will enlarge an image without changing the size of the floatbox frame around it. The image can then be dragged around inside the floatbox frame.
- New 'showOuterClose' option shows a round close button at one of the top corners of the floatbox frame area.
- New 'outerClosePos' places the outer close button at the top-right or top-left corner.
- Tooltips now have a 'placement' option and can be placed to the top, bottom, left, right, or center of a host element or the mouse cursor.
- New 'zoomSource' option can be used to assign an image to be used for zooming any content type (not just images) in and out. It can also be used to assign an alternate zoom image source for standard image and area map zooms.
- New 'addVideoThumb' option can fetch thumbnails from YouTube, Vimeo and DailyMotion and auto-insert those thumbnails into anchors on the base document.
- New 'addPlayButton' option can place a semi-transparent play button over any thumbnail on the main document, including thumbnails fetched by addVideoThumb.
- The 'boxColor' option can now accept two css colors and present a color gradient effect.
- New 'boxBackgroundImage' option can assign a repeating background image to the floatbox frame area.
- New 'showMagCursor' (once|yes|no) option. This will change the mouse cursor to a small magnifying glass when hovered over a floatboxed anchor (in browsers that support custom cursors).
- New 'measureHTML' (auto|yes|no) option. The default of 'auto' gets the old measuring behaviour as described in the instructions.
- New 'stickyAutoFit' (true|false) option. If set to true, gallery sets will retain current auto-sizing state when showing a new item.
- New 'zIndex' can assign a different css z-index value than the default of 90000.
- New 'className' option can be used to assign class-based options to boxes opened from fb.start API calls or from the 'Info...' link.
- New 'minContentWidth' and 'minContentHeight' options limit how small a floatbox's content can be scaled down when it is being auto-fit to the browser's viewport size.
- New 'maxContentWidth' and 'maxContentHeight' options limit the maximum size that floatbox content can be initially displayed.
- New 'zoomBorder' option sets the width of the border around the 'zoom' image when opening or closing a floatbox.
- Setting 'mobileNewWindow:false' will now prevent PDFs and iframes from opening in a new window in Mobile Safari and will show this content in a floatbox the same as for other browsers.
- Can exempt a floatbox item from a globally defined option by setting that option to null in the item-specific options.
- 'stickyDragMove' now defaults to false.
- API:
- New 'fb.DOMReady' function is a quick and easy way to assign DOMContentReady handlers in all browsers.
- The 'fb.ajax' function has two new parameters and modes - 'cacheable' and 'async' - which both default to true.
- fb.ajax() has a return value of the XMLHttpRequest object. This allows access to properties such as responseText from the calling thread for synchronous calls.
- The 'fb.flashObject' function has been enhanced with a better engine, alternate content presented in the visitor's localized language, a new minVersion setting, and user-supplied alternate content in the form of direct HTML or a div reference.
- New 'fb.typeOf' function extends and resolves ambiguities of javascript's built-in typeof operator.
- New 'fb.forEach' function iterates over any javascript object and executes a function against each name:value pair in that object.
- 'fb.addEvent' now returns a javascript object which can be saved and subsequently passed to fb.removeEvent to remove the assigned handler. Previously, addEvent's return value was the assigned event handler function.
- 'fb.removeEvent' can now accept a javascript object from the fb.addEvent function as a parameter to remove the handler assigned in the addEvent call.
- 'fb.addEvent' and 'fb.removeEvent' can now assign DOM0 event handlers by placing the prefix 'on' on the action parameter (e.g., 'onclick' instead of 'click').
- The 'fb.nodeContains' function will see through iframes. I.e., if a node is in an iframe and that iframe is in a node on the parent page, then nodeContains will consider the node in the iframe to be contained by the parent page node.
- Other:
- Iframe video embeds are now the default presentation format for videos loaded from YouTube, Vimeo and DailyMotion.
- Floatbox can detect and set native dimensions for videos loaded from Vimeo and DailyMotion (but unfortunately not for YouTube videos).
- fbPageOptions and fbChildOptions can now be defined as a single option string (like data-fb-options) or in the traditional javascript object format.
- 'afterResize' callback added, which fires whenever the 'fb.resize' or 'fb.<instance>.resize' functions complete.
- There's a new 'fbPopCenter' class available which creates a popup thumbnail centered over the host element.
- Anchors that host popup thumbnails can contain two thumbnails, the first one listed being the one that pops up while the second one is always shown.
- Script elements are pulled from the print window HTML so as not to fire when printing content from 'Print...' or fb.printNode.
- A <base> element is added to the print window to make relative links in the HTML work.
- When direct-loading a PDF document, the default alternate content for visitor's that don't have the PDF reader installed includes an "open in new window" link for the PDF document.
Changes
- API:
- 'fb.translate' is gone because Google is shutting down their free API service as of Dec. 1, 2011.
- The 'fb.restack' function is no longer available through the API.
- The 'fb.showPrevious' and 'fb.showNext' functions are no longer available (but 'showItem' is still there).
- The very old 'fb.getXMLHttpRequest' function is no longer available.
- The legacy 'fb.parent' pointer no longer exists.
- The legacy 'fb.children' array no longer exists.
- 'fb.currentIndex' no longer exists.
- The 'fb.activateElements' function has been renamed to the simpler 'fb.activate' (but activateElements still works too).
- 'fb.topBox' is renamed to 'fb.topInstance' (but topBox is still available).
- 'fb.lastChild' is renamed to 'fb.lastInstance' (but lastChild is still available).
- 'fb.ownerInstance' now returns the instance object rather than its index.
- The html parameter for 'setInnerHTML' now defaults to "", which clears the node contents.
- 'end', 'resize', 'reload', 'goBack', 'pause' and 'showItem' functions are available on the instance objects (e.g., fb.topInstance.end() and fb.instances[1].end()) and also on the fb object (e.g., fb.end()). When called from the fb object, these functions can take an instance parameter as an instance object or an integer. If the instance parameter is not given, they will default to either the clicked box or fb.topInstance.
- Floatbox element references such as 'fbContent' have moved from the fb object to the instance objects (captured in the 'instances' array). For backwards compatability, the elements for the first or only shown floatbox are still available on the fb object (such as 'fb.fbContent'), but for all other secondary floatboxes, the elements can be referenced only from the instance object (such as 'fb.lastInstance.fbContent')
- Options:
- 'autoGallery' (from version 3) no longer exists.
- The 'zoomImages' option has been retired (but still works). In its place, set 'zoomSource:null' to disable image zooming.
- The 'liveImageResize' option is gone. All image resizes are now done 'live' (i.e., the image is not hidden while the box is resized).
- The legacy 'sizeRatio' option is no longer available. Use %w in the height option instead.
- The 'cycleClass' option's name has changed to 'cyclerClass'. (I bet no-one needs to use this).
- The 'backgroundColor' option has changed its name to 'contentBackgroundColor' to add clarity. (The old option name still works).
- The 'mainColor' option has changed its name to 'boxColor'. (The old option name still works).
- Other:
- A unique query string is assigned to the fetch of options.js each time to ensure that options.js cannot be cached by a visitor's browser.
- When assigning the 'framed' option in fbPageOptions, the fbPageOptions definition must appear on the page before the include lines for floatbox.js. Previously, and commonly, the fbPageOptions block containing "framed: true" could be placed anywhere on the page.
- If you break up and disperse the floatbox folder structure (I'm not sure anyone is doing this) you now need to set 'modulesPath', 'languagesPath' and/or 'graphicsPath' in fbPageOptions and define that before loading floatbox.js. Previously, these path settings were edited directly at the top of floatbox.js.
- Direct loading of MetaCafe and Vevo videos is no longer supported. Videos from these services can still be loaded using their embed paths by setting type:flash.
- Only true function before* callbacks can cancel an action. A callback defined as a string can't. (This is because Opera has broken the synchronicity of their dynamic javascript execution.)
Bug Fixes
- In IE pre-9, floatbox content coming from a hidden div that was part of an iframe's document rather than the main document would usually fail to load.
- Chrome versions 13 and 14 have a printing bug that will simply show "print preview unavailable" when using Floatbox's print functionality. A workaround is implemented that leaves the print window open in these Chrome versions.
- fb.serialize and fb.ajax's postData would send only one value for multiple hidden inputs that shared identical names.
- As of version 4.22, autoSizing of scroll-less same-domain iframe content was happening only on first load and not subsequent navigations within the iframe. Now it will auto-size whenever a new page is shown inside the floatboxed iframe.
v4.27
2011/09/01 - new build2011/04/27
Bug Fixes
- (2011/09/01 update) Opera users could not type content into form fields loaded from a hidden div.
- (2011/08/08 update) In webkit browsers, when floatbox.js was included in a cross-domain iframe and the 'framed' option was not used, "unsafe javascript" errors would be continuously thrown and floatbox would not load.
- (2011/08/02 update) Inline div content that was too big to fit the viewport would fail to show when autoFitHTML was set to true (the default). The content was left in the hidden div and the floatbox would be empty.
- (2011/07/31 update) Could not activate tooltips, cyclers and thumbnail popups from a floatboxed same-domain iframe that was loading its own instance of floatbox.js in 'framed' mode.
- (2011/07/31 update) Tooltips would be positioned a little too high if attachToHost, placeAbove and shadowType:hybrid were all set.
- (2011/07/31 update) getElementsByClassName was not providing the default node of documentElement.
- (2011/07/25 update) HTML content (not iframes) that was sized down due to autoFitHTML would fail to show needed scrollbars.
- (2011/07/25 update) Auto-measuring of iframe content that had margin-top set on the body element would measure too large by the amount of the margin.
- (2011/07/25 update) Activated gallery members that came in via a dynamic fb.ajax() fetch would duplicate those gallery members if the same content was fetched again by another ajax call.
- (2011/07/06 update) One more obscure and infrequent IE-only 'unsupported interface' error has been squashed (I think).
- (2011/07/06 update) A gallery set with index links, started from an anchor with an enhanced tooltip attached to it, on a smallish page, could fail to show the index link thumbnails on the first showing.
- (2011/07/06 update) A floatbox opened from an anchor with an enhanced tooltip assigned to it would erroneously apply childOptions to itself.
- (2011/07/03 update) IE pre version 9 could 'bounce' the sizing of an image two or three times after a drag-resize of the floatbox.
- (2011/06/27 update) Fixed obscure IE-only permission denied error when executing script between two simultaneously open floatboxed iframes.
- (2011/06/23 update) Was unable to pass the 'base' param to direct-loaded flash on the href's querystring.
- (2011/06/16 update) There was a bonehead error in the 2011/06/13 update which would cause the French language localization file to fail to load.
- (2011/06/13 update) Setting width to a percentage (e.g., "width:80%") would crash and fail to show the item.
- (2011/06/10 update) The centerOnResize option is now forced to 'false' for Mobile Safari (iPads, etc.).
- (2011/05/30 update) An index link thumbnail that was being shown during a slideshow could stick open when the slideshow moved to the next image.
- (2011/05/10 update) Header and footer elements assigned to a floatbox containing html content could fail to display.
- (2011/05/06 update) An autostart request on a querystring (e.g. "somepage.html?autostart=abc") would start the wrong item if there was a floatboxed link to inline hidden div content on the page before (above) the link for the requested autostart item.
- (2011/05/05 update) Starting a floatbox from an anchor with an onclick action of 'fb.start(this)' would work only once. Subsequent clicks of the anchor would navigate to the target href instead of opening a floatbox.
- (2011/05/05 update) The API functions 'showItem', 'showPrevious' and 'showNext' were not exposed and did not work.
- When disableScroll was set to true, a page was scrolled, and same-domain iframe content was auto-sized at startup, the floatbox's position could be displaced by the amount of page scroll.
- In IE pre version 9, a gallery set with index links could add too much height to the panel containing the index links.
- The showIndexThumbs option was broken. If set to false, the index links would not work.
Enhancements
- (2011/07/06 update) The png graphics (primarily the drop-shadow images) have been optimized and compressed.
- pipIndexThumbs has been added back in to the settable options (because JK2011 wants it).
v4.26
2011/04/07 - new build2011/04/02
Enhancements
- The layout of index links on gallery sets is now cleaner and there are no gaps between the individual links, which means a more seamless display of the popup thumbnails when people move the mouse over different links.
- pipIndexThumbs is no longer a settable option because nobody ever wants to set this to false.
Bug Fixes
- Image elements inside fbCycler divs that were using the longdesc attribute as a long description rather than as an alternate img source path (imagine that) would have their src set to that description and would consequently fail to render.
- Index link thumbs would not properly close when clicked and could remain visible in gallery sets with non-image content.
- A call to fb.resize would cause the original floatbox contents to reload, which is a problem if the contents are an iframe that has navigated to a new page.
- When drag-resizing a floatbox after it has had its size adjusted by a call to fb.resize, the box would jump to its original dimensions at the start of the drag-risizing.
- (2011/04/05 update) When running fb.resize with a width request of 0 (meaning to keep the existing width) against content that has already been resized, the box would revert to its original width instead of retaining its current width.
- (2011/04/05 update) The afterPrint callback would not fire.
- (2011/04/07 update) All files in the zip package are ANSI encoded, which is equivalent to no encoding or plain ascii text (previously UTF-8).
v4.25
2011/03/14Enhancements
- Multimedia:
- Online video services such as YouTube and others are now providing embed services in iframe format rather than the traditional object/embed code. Floatbox supports direct loading these iframe-based videos with the new 'video' type option. The video type can be used as an easy way to show your own iframe-based videos as well. Iframe video delivery gives greater flexibility for cross-browser support and most online videos will play on flash-less devices such as iPhones.
- The 'youtubeAutoEnd' option has been changed to 'autoEndVideo' and now enables auto-closing the floatbox for direct-loaded QuickTime and Windows Media Player videos in addition to YouTube.
- Direct-loaded PDF can now use the Chrome PDF Viewer plugin in addition to the Adobe Reader plugin.
- Yahoo Video is gone as of 2011/03/15, so all support for this service has been removed from Floatbox.
- API enhancements:
- The fb.ajax function has been enhanced with success and failure callback functions and a timeout parameter for aborting the AJAX fetch if it's taking too long. See the API Reference for details. (A small change: fb.ajax no longer returns the XMLHttpRequest object when called. Access the object from the callback functions.)
- fb.ajax can now make multiple simultaneous asynchronous requests. Previously, only one request at a time was allowed.
- The fb$ API function will search all open floatboxes if it does not find an id match on the current document. This can help when running code that interacts with a stack of one or more iframe floatboxes.
- fb.ieVersion added to the API. This is a reliable test for IE. It is an integer, 0 for non-IE browsers, and the IE version otherwise. Example usage: if (fb.ieVersion < 9)...
- Other:
- showPrint functionality is now available for Mobile Safari (iPhones, etc).
Bug Fixes
- Opera 11 and IE pre version 9 could fail to print some iframe content when showPrint was activated.
- On slow-loading pages, if a floatbox with hidden div content was opened early while the page was still loading, it could fail to open again on subsequent clicks.
- AJAX content could be fetched twice if it was too big to fit the browser viewport.
- API calls, such as 'fb.ajax(...)', made from a floatboxed iframe page while the page was initially loading could fail to complete.
- Opening and closing stacked iframe-content floatboxes could generate "permission denied" and "freed script" errors in Internet Explorer.
- Direct-loaded YouTube videos would not play in the iPhone's youtube app in version 4.24. An invitation to download flash would appear instead.
- In Mobile Safari, direct-loaded multimedia would not remain proportional when resized to fit the screen.
- In old versions of Opera, a floatboxed image with a tooltip assigned via the 'tooltip' option could hang when closing the box.
- A floatbox that had been dragged to a position where it had negative left or top values would jump back to zeroed positions before closing or resizing.
v4.24
2011/02/20Enhancements
- The controlsOpacity option has been reinstated. This sets the opacity of the overlayed navigation, and the two resize widgets.
- Can now move a floatbox showing an image by dragging on the overlayed navigation panels. Previously you could drag only on the uncovered portion of the image between the nav panels.
- When auto-setting height of the floatbox to match same-domain iframe content, overflow css settings on the html and body elements are removed to allow successful content measurement.
- Windows Media Player will no longer be used as an alternate player for .mov file types when Quicktime is not available. WMP supports .mov file playback but often fails when trying.
- Removed unecessary code to check for Flash Player versions earlier than v7.
- The minFlashVersion setting for direct-loaded Flash content now defaults to 7.0 because earlier versions cannot play most modern flash files.
- Removed code that handled IE9beta's fixed positioning bug. The release candidate does not exhibit the bug.
- 'bgcolor', 'kioskmode' and 'loop' have been added to the parameters that can be set on an href's querystring for direct-loaded QuickTime. (2011/02/21)
Bug Fixes
- When centerNav was set to true and when navigating from a wider to a narrower item in a gallery set, the autoFit calculations could make the box a little bigger than the browser viewport rather than fitting entirely within the viewport.
- The floatbox could fail to open when sameBox was set to true and an enhanced tooltip was showing.
- Flipping between two tooltips that come from hidden divs and are attached to content shown inside a floatbox could cause one of the tooltips to get lost and be replaced by the entire base page.
- The ie6 end-of-life page could show a 404 error in random cases by loading prior to the browser language localization being determined.
- When hideObjects was active, flash objects created by swfObject2 could fail to unhide after a floatbox closed.
- When floatbox links were added to a page dynamically and then shown immediately as a gallery, maxIndexThumbSize could fail to take effect on the index links (because the thumbnails had not finished loading and so could not be measured).
- The open-in-a-new-window link text could wrap unecessarily under IE9.
- A call of fb.activateElements() would reset inventoried items that originated from the base page, but would fail to reset items defined in an active floatbox's content.
- IE could continue to play direct-loaded Windows Media Player videos after the containing floatbox was closed and destroyed.
- If hidden div content came from an iframe shown inside a floatbox, and then that iframe page navigated to a new page that had its own hidden div with the same id as the div on the original page, fetches of hidden div content from that second page could erroneously re-use the div content from the first page.
v4.23
2010/12/31 - new build2010/12/28
Enhancements
- Changed the behaviour that was introduced in v4.22 of hiding the page scrollbars when disableScroll is active. Now the scrollbars will not be hidden unless the new option 'removeScrollbars' is also set to true.
- Surrounding quotes are stripped from individual settings in option strings. The settings in an option string should not be quoted (because it's already a string), but doing this will now not generate errors.
- Both captions (caption and caption2) can now have the same captionPos and caption2Pos setting and so appear in the same corner of the floatbox frame.
Bug Fixes
- 2010/12/31 - Very obscure (and likely rare) bug where Floatbox was seen to fail to intialize on one particular page only under Firefox 3.6.
- When a header or footer was defined as coming from a hidden div, and a div with the referenced id existed on both the main page and an iframe page within that main page, you could end up with two headers or footers on gallery set items.
v4.22
2010/12/22Enhancements
- Two new elements, 'header' and 'footer', have been added. These are settable as options and allow you to place html content immediately above and below the floatbox on a transparent background.
- It is no longer necessary to include floatbox.js on a same-domain iframe content page in order to have Floatbox auto-size its box to fit the iframe contents. Auto-sizing will occur for all same-domain iframe content that has scrolling:no set on it.
- It is no longer recommended that options.js be explicitly included on the page to speed up IE readiness. Floatbox will auto-load options.js early.
- Found a way to scriptomatically do an early add of the vml namespace required for round corners in IE pre version 9. It is no longer recommended that Floatbox pages have an explicit <xml:namespace> declaration in the document head.
- When disableScroll (fixed positioning) is assigned to a modal floatbox, the page scrollbars will be removed preventing unwanted base page scrolls from occurring when using the mouse wheel to scroll the floatbox content.
- Setting disableScroll to true to assign fixed positioning to a floatbox now works in IE9beta, despite that browser's bug with moving from fixed to absolute positioning.
- Cross-domain iframe content will always open in a new window on Mobile Safari devices (because such content cannot be measured and so cannot have the floatbox auto-sized to its height).
- The cacheAjaxContent option has been removed because most browsers won't pull AJAX content from their cache.
- The 'loop' parameter is no longer supported as a flash variable, allowing 'loop=1' to be passed as a querystring parameter to the YouTube player.
Bug Fixes
- The index link for the last item of a gallery set would not show when numIndexLinks was set to less than the number of images in the gallery set.
- The doAnimations, resizeDuration and splitResize options, if set in fbPageOptions, would not apply to a second floatbox that had the sameBox option set to true.
- Old versions of Firefox (1.x and 2.x) would just show white on white for direct loaded PDF documents. PDF files are now loaded as iframe content for old Firefox and work fine this way.
- Obscure bug in old versions of Opera (pre 9.5) when measuring element's scroll values resulted in zoomImages not happening.
v4.21
2010/11/22 - new build2010/11/12
Enhancements
- The configurator and Options Reference have both been re-organized by category, making the finding and setting of option preferences an easier task.
- Serbian (sr) and Bosnian (bs) language localization files added, and the Croation language file updated.
- Firefox will no longer show a large flashing cursor beside a floatbox when Caret Browsing is enabled with F7 or the accessibility option "Always use the cursor keys to navigate within pages".
Bug Fixes
- 2010/11/22 Alternate content link to the Adobe Reader download, shown when the Reader plugin is not present for direct pdf display, was broken.
- 2010/11/19 Fixes IE8, 7 and 6 sometimes throwing errors when trying to load the vml namespace in windows.onload, and occasionally preventing a floatbox from opening.
- 2010/11/18 Fixes preloadAll not working in v4.20 and v4.21.
- Script elements brought into a floatbox by an AJAX fetch would throw an error and not execute.
- A really large number of index links being displayed for a gallery set could cause distortion or collapse of an autosized floatbox's dimensions.
- Tooltips assigned to content shown in a floatbox with the 'tooltip' option would not obey the 'moveWithMouse' directive.
v4.20
2010/10/31Enhancements
- Mobile Safari (iPhones etc.) is now a supported browser and there are many enhancements and tweaks that make Floatbox content behave well on this platform:
- Touch event handlers have been added to the enhanced tooltips, thumbnail popups and drag-move handlers to make them behave naturally with mouseless clients.
- Positioning and sizing of opened floatboxes is correct when the page is scrolled and zoomed.
- HTML content in a floatbox that would normally be displayed with scrollbars is auto-measured and shown full height. This helps greatly because mobile touch devices don't have scrollbars or any other visible indicator that an element can be scrolled, and the two-finger element scroll gesture doesn't work very well at all. (To support this, autoFitHTML is disabled on iPhones.)
- A new option, mobileNewWindow, has been added which permits content to open normally in a floatbox for 'normal' browsers, while directing mobile devices to open the content in a new window or tab. This is good for large content that does not fit well on the small screen or for scrollable content that can't be auto-measured, such as an iframe from an external domain. Examples of this in use can be seen in the Instructions and RSS News Reader examples on the HTML tab of the demo page.
- Pdf content will always be automatically opened in a new window, thus avoiding UI problems due to the absence of scrollbars.
- The transluscent page overlay always completely covers the visible page area.
- Start (and end) at click location is now accurate.
- The API functions fb.getViewportWidth and fb.getViewportHeight return correct dimensions (in pixels) for zoomed pages.
- enableDragResize is disabled because touch devices have a better way of accomplishing the same thing through gestures.
- showPrint is disabled because mobile devices don't print.
- Animation routines (box resizing and opacity fades) are now time based rather than increment based. This results in significantly smoother animation for capable browsers and computers, and prevents excessively slow animations on problematic browsers such as IE and underpowered computers such as netbooks.
- Movie files that can be played by both QuickTime and Windows Media Player will be direct-loaded using whichever plugin is available on the client. The file types supported for this are mov, mpg, mpeg, avi, m1v and mpe.
- Direct loaded YouTube videos will now auto-close when they finish playing.
- An 'ie9betaSafe' option has been added and set to true which invokes workarounds for the IE9beta positioning bug that causes floatbox to render at the wrong location on scrolled pages. This has a side-effect of disabling fixed positioning (aka, disableScroll) on IE9, but hopefully the bug will be fixed and ie9betaSafe can be set to false on existing installs and removed from future releases.
- When enableKeyboardNav is true (the default), and a same-domain iframe is loaded in a floatbox, a keyboard handler is inserted into the iframe document making the esc key available for closing the box regardless of whether the iframe document or the top page's document currently has focus.
- An item opened with the API fb.start() function and added to an existing gallery set with a common group option will now be added as the first item (item 1 of x) of the set, rather than appended as the last item.
- Anchors marked for floatbox activation (with a class of "floatbox") have their pre-existing onclick actions nulled to avoid the possibility of two floatboxes opening when the anchor is clicked.
- Javascript loaded into a floatbox as part of an AJAX content fetch will now have that script executed in the global context with the 'this' keyword equal to 'window'.
- Measuring and auto-setting height for iframe content can now be done when the 'framed' option is set on the iframed floatbox.js instance. (Previously it would be done only if the framed option was not present.)
- Animations are automatically disabled for the Kindle and Nook e-readers (because they handle them very poorly).
- The legacy licenseKey.js file is no longer supported. License keys must go into options.js (or fbPageOptions). See the instructions.
- Changes and enhancements to option settings:
- New options have been added that allow direct customization of Floatbox colors without css modifications: mainColor, overlayColor, innerBorderColor, outerBorderColor, textColor, strongTextColor and strongControls. See the Options Reference for details.
- The height option can now be specified as a percentage of the width using the syntax 'height:xx%w'. This allows maintenance of the correct aspect ratio when width sizing is done as a percentage of the viewport size.
- The old sizeRatio option is now deprecated (but still works). A previous setting of 'sizeRatio:1.25' can now be specified as 'width:max height:80%w'.
- youtubeAutoEnd option added which can be set to false to disable the new auto-end of YouTube videos behaviour.
- autoFitMedia is now defaulted to true.
- zoomImageStart has been renamed to zoomImages, graphicsType has been renamed to controlsType, and color has been renamed to colorTheme. The old option names still work.
- API enhancements and changes:
- Added a new fb.mobile property which is set to true when running on Mobile Safari.
- Two new functions, fb.getScrollLeft and fb.getScrollTop, have been added to augment the existing fb.getScroll function.
- The old functions fb.getDisplaySize, fb.getDisplayWidth and fb.getDisplayHeight have been renamed to fb.getViewport, fb.getViewportWidth and fb.getViewportHeight. The old function names still work.
- fb.getIframeWindow and fb.getIframeDocument can now accept an iframe's id string in addition to the iframe element itself as the optional parameter.
- Added a new second parameter to fb.getLayout which, if equal to true, will make the returned coordinates relative to a containing iframe's document rather than to the top document.
- fb.getElementsByClassName will accept an array of class names to match, returning an array of all elements that have any of the class names assigned.
Bug Fixes
- Opera could fail to show html content as the second item of a gallery set or when replacing existing box content with the sameBox option.
- Auto-translation of the IE6 end-of-life notification to non-English languages was broken and would not happen.
- Scripts inside AJAX content could fail to execute if animations were turned off and width and height were specified in the floatbox options.
- In versions 4.17 and 4.18, Firefox could briefly black-out an image thumbnail on first click after a page load.
- In versions 4.17 and 4.18, direct load of a flash file with a complex querystring on the path (such as with flowplayer) could fail to render in Firefox due to Firefox (and no other browsers) encoding the URI string returned in the .href property.
- When image resizing by mouse click was enabled (resizeImages = true, resizeTool = 'cursor' or 'both') and the box was moved by a mouse-drag on a displayed image, the box would resize on the mouse-up at the end of the move.
- A focussed form input would lose focus when an enhanced tooltip was shown in Firefox or IE.
- Popup thumbnails wouldn't pop up after fb.activateElements() was manually run.
- Enhanced tooltips with an iframe source could have their vertical position pulled away from either the host element or the mouse location when the tooltip box was auto-sized on start.
- When a floatbox is 'auto-fit' to a small browser screen, it can no longer get so small that the controls spill out of the box's frame area.
- With showHints set to 'once' (the default) the controls' tooltip hints would show again when a new box was started up.
- If Floatbox was included on a dynamically created iframe and that iframe was quickly torn down shortly after its creation, a 'fb is undefined' error could occur.
- Enhanced tooltips could fail to initialize in IE on a very large, slow loading page.
- Could not move a non-modal floatbox to the top of a stack of such boxes with a mouse click if both enableDragMove and enableDragResize were false.
v4.18
2010/09/13Enhancements
- It is no longer necessary to place a style of "display:none;" on individual image/thumbnail cycler elements. Management of the required display states is now handled by Floatbox code and css.
- Auto-measuring of html content size has been tweaked and is successful in more cases now. (Not all content can be measured, but most can.)
Bug Fixes
- Ever since the browser back-button issue was fixed in version 4.14, showNewWindow placed on cross-domain iframe content would show the loading gif in the new window, rather than the iframed page. (Same domain content was fine.)
- Pressing the tab key with images where resizeImages was set to false or with forms loaded as iframes could throw a non-fatal error. This error could interfere with proper tabbing through an iframed form's input fields.
v4.17
2010/09/04Enhancements
- Direct loading of YouTube videos is now done such that the iPhone YouTube app will play the video if available. (Not all YouTube videos are playable by the iPhone app.)
- The fb.resize API function will now reposition the floatbox on the screen and recenter captions and other frame area content after resizing the main box.
- The fb.flashObject function has a new parameter 'altContent' to provide alternate content to client agents that don't have flash installed and enabled. Additionally, parameters can now be passed to this function as members of a single javascript object.
- Tooltip-based help information has been added to the configurator for each configuration item on the form.
- The showHints option is forced to 'never' if enableKeyboardNav is false.
- Persian language localization file added.
Bug Fixes
- Tooltips that are set to move with the mouse will stay with the mouse cursor when the underlying page is scrolled by the mouse wheel.
- Unable to set language to 'en' for browsers localized to a language other than English.
- When fb.start(source, options) was called with a source parameter of an existing floatbox item, the options parameter could be ignored.
- When zoomImageStart was true and a clicked image was slow in loading from the server, the transluscent page overlay would not show until after the image fetch completed.
- When imageClickCloses and enableDragMove were both true, and the box was moved by a mouse-drag on a displayed image, the box would close on the mouse-up at the end of the move.
v4.15
2010/08/16Enhancements
- The 'fb.getLayout' API function can now measure the page-relative position and extent of individual <area> elements in an image map.
- Because getLayout can now handle <area> elements, the 'attachToHost' and 'moveWithMouse' options for enhanced tooltips now work on those elements.
Bug Fixes
- The legacy 'autoGallery' functionality was broken.
v4.14
2010/08/08Enhancements
- Language localization files were previously utf-8 encoded and would work correctly only on pages using the utf-8 charset. Now the language strings are ascii text and will work correctly under any page encoding.
- Added new shadowType of 'hybrid'. This gives the full shadow on the right and bottom, and a half shadow on the top and left. (Tip: The hybrid shadows work well with an outerBorder of 0.)
- The shadows are a little bit lighter and subtler.
- Browser back-button misbehaviour when loading iframe content in a floatbox is corrected. Firefox no longer gets stuck on duplicate history entries, and the back button will no longer take the visitor back to the iframe's initial loading gif.
- API function 'fb.executeJS' now accepts a callback function parameter to be fired when the external javascript has completed its execution.
- 'fb.translate' has a new 'plainText' parameter for translating plain text content instead of the default html source content.
- 'fb.translate' will accept a nodeList as well as an array for multiple page elements to be translated.
- Links that inherit the floatbox class from a containing div can now also inherit class-specific settings from the global classOptions or page specific fbClassOptions that are assigned to classes on the containing div. (This sounds a little obscure and confusing, but it just means that setting options by class will work as you expect when inheriting from a containing div.)
- Slideshow member items can have per-item display intervals by setting 'slideInterval' directly in the item's data-fb-options attribute.
- Moved the 'behavior' setting required by IE for VML round corners out of the css and into the code, making floatbox.css 100% valid.
- A box cannot be drag-resized or auto-resized so small that the navigation controls no longer fit in the frame area.
- Cycler div items that are also set to be a floatbox gallery set and that have a caption in a span will use that cycler caption as the floatbox caption too.
- IE 6 now gets round corners too.
Bug Fixes
- The keyboard handler was not being released after a floatbox closed. For Opera, this meant the keyboard was completely disabled.
- A non-fatal permission denied error could be raised in Firebug when hideObjects or hideJava were set to true and certain web advertising services were included on the page.
- Non-fatal 'fb is not defined' errors could be raised when content was removed as a result of a mouse click action.
- An attachToHost setting of 'true' will be ignored for tooltips assigned to area elements because they don't have measurable position on the page.
v4.13
2010/07/24Enhancements
- fb.addEvent has been extended to support the DOMContentLoaded event for all browsers (yes, including IE). Call fb.addEvent(document, 'DOMContentLoaded', myFunc) to register early DOM load events.
- The code is IE9 ready. It will use the new standards-based capabilities of IE9 and avoid many of the workarounds that were necessary for all previous IE versions. (IE9 is looking excellent; finally up to the standard set by the other major browsers.)
- The dynamically created img element used for zooming image content from a thumbnail now always has src and alt attributes, making it technically correctly formed.
Bug Fixes
- IE would throw permission denied exceptions when ending an iframe floatbox whose content includes floatboxed anchors, cyclers or tooltips, if that content page had been navigated away from within the floatbox.
- The 'timeout' setting for enhanced tooltips was not working.
- In IE, images zoomed up from a thumbnail within an iframe could have a displaced starting position if the iframe element had borders or padding.
- An empty caption in data-fb-options (e.g., caption:``) could break parsing of that option string.
- Resolved a few troublesome interactions between the various ways content can be sized.
- The 'Info...' link wouldn't fire after a resized box had been click-resized.
- If a floatbox had been auto-sized down to fit the screen and then subsequently drag-resized with the mouse, it would jump to small dimensions.
- Drag-resizing could also 'jump' the floatbox size when done after the box had been resized with the fb.resize() function.
- The fb.resize() function, when called without size parameters for images, could distort the proportions of the displayed image.
- After invoking fb.resize() on an autoSized image, the click-to-resize cursor or control would still be available even though it no longer had anything to do.
v4.12
2010/07/19Enhancements
- The resize function handles scrollbars better and can successfully auto-measure some complex html that earlier versions would get wrong.
- Auto-sizing of iframe content when first loaded in floatbox will now adjust the height either up or down as required.
- API function fb.getStyle has been given a 3rd parameter of 'integerize' which will cause the requested css values to return as (you guessed it) integers.
Bug Fixes
- In a gallery set with captions defined in hidden divs, floatbox could crash when returning to view a gallery set member a second time.
- IE (and only IE) could start an item twice that was dynamically added to a page and had onclick="fb.start(this)" on it, but only on a fresh browser start and not by a cache flush and page reload (very odd).
- The API fb.getStyle function, when not passed a specific property value, was failing to return the correct complete cssText in some browsers.
v4.11
2010/07/15Enhancements & Changes
- Content and captions fetched from hidden divs now have the div node itself moved into floatbox rather than copying the html. This preserves any event handlers that may have been attached to elements in the hidden content.
- HTML content that is auto-measured (that doesn't have an explicit height set) when the autoFitHTML option is active will have no scrollbars if it fits in the browser window and will get scrollbars if it needs to be resized down to auto-fit.
- New API function fb.translate() provides a wrapper for the Google Translate service and will translate floatbox content or other text. See the API reference for details.
- New API function fb.executeJS will dynamically load and execute an external javascript file. See the API reference for details. (The "IE 6 end-of-life" example on the demo page showcases both fb.executeJS and fb.translate.)
- Three new accessibility enhancements:
- New option 'attachTo' allows the floatbox to be attached to the html document at a location other than the end of the body. This allows content to comply with US Section 508 accessibility requirements for placement and facilitates compatibility with screen readers by placing floatbox content in natural page content order. Can specify an element id to attach to, or "click" to attach just below the clicked anchor.
- New per-item option 'altContent' added which assists accessibility compliance by providing alt tags for floatboxed images and titles and alternate content for floatboxed iframes.
- Captions placed above the floatbox content will be read in the correct sequence by screen readers.
- The IE6 end-of-life notification popup is now translated to the visitor's browser language.
- API addEvent function has been improved for IE by correctly setting the 'this' keyword in the event handler, providing the event object as a parameter to the handler, and setting 'target' on the event object.
- A new option, 'autoTypes', has been added. When setting the floatbox class on a containing div and letting that propogate to child elements in the div, set 'autoTypes' in the containing div's options to limit which types of child elements get the floatbox class auto-assigned.
- API fb.ajax function now has a return value of the XMLHttpRequest object so that its properties and methods (such as abort()) are accessible and usable.
- API fb.resize function will re-measure and auto-size currently displayed html content if no width or height parameters are passed (good for if the content has changed dynamically).
- Mouseover and out actions for enhanced tooltips and cycler div's pauseOnHover moved to DOM2 events so as not to interfere with other events people might put on those elements.
- The floatbox.css file has been re-arranged with all the custom theme settings near the top to make customization a little easier.
- autoFitOther has been split to autoFitHTML and autoFitMedia.
- The default for autoFitHTML has been set to 'true' because this is almost always the desired behaviour.
- The resizeOther option has been removed. It never made much sense to have click-to-resize functionality on non-image content.
- minContentWidth and minContentHeight options have been removed as settable options because there isn't a good reason for end users to adjust these.
- Class names used for marking elements for Floatbox behaviours are now settable options (floatboxClass, cyclerClass & tooltipClass) in case the default class names are already in use for other purposes.
- Animation speed has been increased on iPads.
- Changed the type option's value of 'img' to 'image'. ('img' still works)
- When the caption 'href' is specified, the caption will now be just the filename rather than the complete URI of the floatbox content.
- Spacing between individual index links is increased slightly.
- Estonian and Lithuanian language files added.
Bug Fixes
- A very large caption, combined with autoFitImages set to its default of true, could cause image resizing to display the caption outside the bounds of the floatbox and could crash floatbox in IE.
- A slideshow started with the options "showThis:false doSlideshow:true" would cause those options to get propogated to the gallery items causing subsequent launches to drop gallery members and to run a slideshow when not requested.
- Iframe content with no height or scrolling option specified would fail to show scrollbars.
- The download link for Windows Media Player install was incorrect.
- Keyboard shortcuts would not work in Firefox for content opened from a link within an iframe until after something in the floatbox was mouse-clicked.
- In 64-bit IE, the bottom left round corners were misaligned by 1 pixel.
- Horizontal positioning of start positions and tooltips was off in IE8 on RTL (right-to-left) layout pages when scrolled to the left.
- If an image was closed before zooming in of the box had completed, it would zoom out as a blank box instead of as the image.
- If index links were active on a slideshow, an open index link thumbnail could stick open when the slideshow moved to the next item.
- A direct call to fb.start() would unnecessarily require a non-null 'source' parameter even when 'showThis:false' was in the passed options.
- Danish language localization file was broken. (The Danes would get English.)
v4.04
2010/05/25Two Obscure Bug Fixes
- Index links attached to floatbox gallery items residing in a hidden div would not show in Internet Explorer.
- Re-populating an existing floatbox that has no round corners by using the sameBox option or the fb.reload function could cause floatbox to error out on Internet Explorer and some older browsers.
v4.03
2010/05/17Bug Fixes
- If a floatboxed image was invoked at the same time as it was being preloaded, the image could display as a 0 x 0 dot.
- In IE, floatbox could crash on exit when trying to zoom out to a thumbnail that had been dynamically removed from the page.
Changes
- Framebox.js is no longer distributed in the zip package. Anyone with include lines for framebox.js will need to change that include path to 'floatbox.js?framed' or add 'framed:true' to fbPageOptions. (see the docs)
- Code is restructured so that the modules can be appended to floatbox.js to create one monolithic js file. Note that doing this makes floatboxed pages load slightly slower.
- English language localization strings have moved into core.js. English browsers will no longer do a module fetch to get their strings.
- IE-specific css settings moved from the css file into the code (for validation improvements).
- CSS left:0; added to cycler div elements to help them position better inside <td> elements on IE 6 and 7.
v4.02
2010/05/11Bug Fixes
- A URL with a #hash component (e.g., /somePage.html#someDivId) that should have loaded as an iframe would fail with a "404 - Requested content not found" message.
- If box dimensions are based on measuring html content rather than explicitly set in the options, and autoFitOther is set to true, the auto-measured height could be too great by one scrollbar width.
- Tooltips could fail to start when mousing rapidly between two adjacent tooltipped elements placed closely together.
- When displaying a tooltip nested inside an open floatbox, sliding from that tooltip directly to a tooltipped page element could fail to open the second tooltip.
- When printing iframe content from floatbox, Internet Explorer could fail to pick up the style attribute of the body element.
- The afterPrint callback function was not firing.
- When stickyDragResize was set and html box content was changed either by a sameBox load or by navigating in a gallery set of html content, odd box sizing behaviour could occur. Now the stickyDragResize option applies only to images and video content.
- The version 4.01 configurator.html page was broken when run in Firefox.
Enhancements
- A few of the code modules which are used on almost all implementations have been merged into core.js, cutting down on the number of js files to be individually loaded.
- An enhanced tooltip can be attached to the floatbox content using the new 'tooltip' and 'tooltipOptions' settings applied to an anchor.
- For HTML content, type-specific options can be assigned to the main type 'html' or to the individual sub-types of 'iframe', 'inline', 'ajax' and 'direct'.
- Retired the colorImages, colorHTML and colorVideo options and added per type color settings to options.js.
- The showNewWindow hovered background graphic is now preloaded to avoid a brief wink when mousing over the newWindow link for the first time.
- Placement of the left side of a tooltip is now proportional to the width of the tooltip.
- API library function getStyle() will return a cssText string of all effective settings for an element if no css property name is passed/requested.
v4.01
2010/04/25Bug Fixes
- Image preloader could consume cpu and freeze the browser if preloading a large number of images from a slow server.
- In some circumstances the license key would fail to load from the legacy licenseKey.js file.
- autoStart:once would not fire.
- If more than one image cycler was on the same page, one of the cyclers could jump to the last image in the set during each fade transition.
- IE will not show a pdf file from an external domain as a direct-loaded object using the Adobe Reader plugin. External pdfs in IE are now shown as iframe content.
- A quick mouse click on a slow-loading page could throw a non-fatal error.
- Floatbox could fail to run on application/xhtml+xml pages in some older browsers.
Enhancements
- A caption can now point to a hidden div to pick up its html content. This avoids the need to put messy encoded html in the caption string.
- When a containing div is assigned the floatbox class to be inherited by child elements in that div, data-fb-options can also be set on the containing div and will be inherited by the children.
v4.00
2010/04/12Enhancements
- Enhanced tooltips. Any element can have a customized mouseover tooltip comprised of any kind of floatbox content.
- Non-modal boxes. Added the ability to open, move, resize and switch between multiple non-modal floatboxes simultaneously, allowing a web page to host a virtual windowing system.
- Auto-detection of inline, ajax and direct html content dimensions. If the html content has been given a width in some manner, then you don't need to provide width and height settings in the anchor's data-fb-options/rev attribute.
- Corners are now drawn and don't use background images. This speeds load time and makes color customization an easy matter of editing the css file.
- An IE6 end-of-life autoStart box can be enabled giving IE6 users the opportunity to upgrade their browsers. By default this is disabled, but everybody PLEASE turn this on.
- The image/thumbnail cycler will now fade out the old image when the new completes fading in. This prevents the old image from appearing to "snap" out when it is larger than the replacement image.
- The cycler has better handling when the next cycle fade fires before the last one has completed.
- Added 'cyclePauseOnHover' option to pause cycler image or thumbnail sets on mouseover.
- Index links can now show the associated thumbnails as a a pip (picture-in-picture) display in the closest corner of the floatboxed image.
- Pdf files can be direct loaded as a media type using the Adobe Reader plugin.
- Added 'appendToForm' option which will attach floatbox to a specified form, rather than the body. This is useful for displaying form fields in floatbox on asp.net pages which can have only one active form.
- Option setting is now both more flexible and more organized. An 'options.js' file has been added for setting global preferences. Options preferences can be assigned globally, per page, per item and based on class name or content type. (License keys go into options.js.)
- The 'floatbox' class can now be assigned to any containing element, such as a div, to activate all anchors in that element without needing to assign the floatbox class to each anchor individually.
- If a query string is appended to the floatbox.js include line, the same querystring will be appended to fetches of the module files. This can help avoid stale cache problems when upgrading floatbox versions.
- Hidden div styles can be applied directly to the hidden div itself. There's no longer a need for a second nested div for styling.
- The API and library functions have been greatly expanded. See the API Reference for a full listing.
- Many of the API functions are now available immediately upon load of the floatbox.js file and can be called during the build of the page without waiting for the afterFBLoaded or window.onload events.
- The fb.ajax() library function is enhanced in two useful ways: If the updateNode parameter is used to dynamically add content, all floatboxed elements in that content will be automatically "tagged" and any inline javascript in the fetched content will be reliably executed. And, the postData parameter can now accept a form element or its id to correctly and easily post the form via ajax.
- Added a fb.flashObject library function to easily create flash objects on the base page (and avoid firefox and opera's annoying "click to activate" behaviour).
- The 'fb.end' API function can now accept a url parameter to be navigated to after the floatbox closes, similar to setting fb.loadPageOnClose.
- The 'fb.start' function has been simplified and now uses just two parameters, 'source' and 'options' (the old syntax still works).
- 'fb.start' can accept a DOM node reference as a pointer to inline hidden div content to be shown.
- 'fb.start' will post a 404 notice on failure to find a requested inline div.
- The 'fb.preload' library function can now accept an array of image paths to be preloaded.
- Shadow background images are preloaded for a more seamless first box display.
- A new 'backgroundColor' option has been added that allows the background color to be set for transparent box content.
- Added 'autoFitSpace' option. This is the gap left between the floatbox edges and the browser window edge when items are autoSized.
- The floatbox now opens exactly centered horizonatally regardless of what box shadows are being used.
- When 'startAtClick' is set, the box will now start at exactly the mouse click location rather than the center of the clicked anchor or thumbnail.
- Items opened from an 'fb.start' function call will open at the mouse click position instead of the screen center if the call originates from a click action.
- If navigation has occurred inside a floatboxed iframe to a new same-domain page, 'showNewWindow' will open that current page in a new window rather than opening the original floatbox content page.
- Multimedia content can now be drag-resized. (Dimensions are set to 100% rather than hard pixel values.)
- iframe content is no longer hidden while the box is being moved by mouse-drag.
- Added direct-loading of vevo.com music videos.
- 'autoStart' items fire a little quicker on slow loading pages (moved from window.onload to DOM and floatbox core loaded).
- 4px shadow size and corner radius added, primarily for use by the new tooltips.
Bug Fixes
- Hidden div content would disappear if the floatbox showing it was closed before it had completely opened.
- Ajax or inline floatbox content that contained more that one javascript block would only have the first block executed.
- autoFitOther was incorrectly doing a proportional resize of html content. Now it will just resize the oversized dimension as required.
- An attempt to open a secondary floatbox with a close button on it from a floatbox with no close button would crash and fail.
- fb.ajax now creates a new XMLHttpRequest object for each request. This avoids obscure problems that can occur with nested ajax calls. (Simultaneous ajax requests are no longer queued but run in parallel.)
- tagAnchors was running twice against each iframe at startup
- The showNewWindow sprite graphic is now split into two files so that it wouldn't look goofy when the newWindow string wrapped.
- Popup thumbnails inside a position:relative div would popup in the wrong place. This was previously fixed in v3.52.0 but the bug was foolishly reintroduced in version 3.54.0.
- Captions that contain html with block elements could sometimes fail to display in webkit browsers.
- If a floatbox anchor was in an iframed page, and that iframe was in a different folder than its parent page, and the anchor's href used a relative path that was relative to the iframe location, floatbox could fail to locate the referenced item for display in some browsers.
- Resize function could set incorrect top and left box positions.
- Select elements in inline hidden div content would not show in IE6.
- On rare occasions Opera fails to complete an image fetch request. This could cause floatbox to get stuck on its loading graphic. Now the image fetch is re-initiated after 5 seconds.
- When box resizing or moving was enabled and iframe content shown, the keyboard shortcuts handler would stop working after focus returned from the iframe window.
- In IE6, the transluscent page overlay would not fill the entire screen on rtl (right-to-left) layout pages that were scrolled or resized.
- Opera would wiggle and scroll (and sometimes navigate away) the underlying page when using left/right or spacebar keys to navigate a floatbox gallery.
- In very rare cases, license key validation could fail on a domain with numerical digits in its name.
- maxIndexThumbSize would not take effect if an explicit width or height set on the original thumbnail was less than or equal to the max size request.
- For Opera on right-to-left layout pages, cycling image sets could display outside of the containing div and get pegged to the right side of the window.
- Fixed inability to open a gallery set defined on the main page from a start call made from an open floatbox.
- Fixed inability to load hidden div content using the fb.start() API function when that content was contained in an iframe document currently displayed within a floatbox.
Changes
- PDF files are now loaded as multi-media using an object element, so they will now pick up the media color assignment (default blue) rather than the html colors (default white).
- Removed the legacy compressed folder. Anyone with include lines pointing to that folder and upgrading will need to change their floatbox includes.
- Language localization files now load as dynamic modules rather than with ajax to avoid cross-domain problems when the floatbox files are included from another domain.
- Eliminated all (I think) IE memory leaks.
- Color theme css files merged into floatbox.css
- Removed level or instance restrictions on what can go into a gallery set.
- Changed default scrolling value to 'no' for multimedia content.
- Replaced 'fb.children' array with the more useful 'fb.instances' array that includes the primary floatbox (fb) as fb.instances[0]. (fb is not in the 'children' array.) The children array still exists to protect pre-existing code that uses it.
- 'tagAnchors' function renamed to 'activateElements' and expanded to handle new tooltip, cycler and popup content.
- 'fb.getXMLHttpRequest' function removed. Use 'fb.ajax' directly please. (The old function still works for backwards-compatability with existing code.)
- Added handling of line breaks in data-fb-options (rev) values.
- 'autoTitle removed'. Set caption in fbPageOptions or fbTypeOptions instead. ('autoTitle' is still available for backwards compatability.)
- Legacy support for the 'setFloatboxOptions' function removed. (I don't think anyone's using this.)
v3.54.3
2009/11/29Bug Fix
- AutoGallery was broken. Clicking previous or next could open up a second floatbox instead of refreshing the current one.
v3.54.2
2009/11/14Bug Fix
- Image cycler sets inside an iframe would not start cycling at page load on non-IE browsers.
v3.54.1
2009/11/10Changes
- In some configurations, the box could start from the middle of a thumbnail but end to the middle of the screen. Now it will start and end to the same location.
- fbCycler divs would fade the captions along with the images, but IE renders text opacity changes very poorly. Now the cycler captions switch without fading in IE (but still fade for all other browsers).
- Dutch language localization file corrected and updated.
v3.54.0
2009/11/05Enhancements
- Much more flexible placement of various widgets like captions, info links, controls, etc. in the floatbox border area.
- You can now add a second caption to the floatbox border area using the new caption2 option.
- Added showNewWindow option which will display a link allowing users to break out of the floatbox and open the content in a new browser instance or tab if they wish.
- closeOnNewWindow and showNewWindowIcon options added to work in conjunction with the new showNewWindow capability.
- Configurator tool now included which allows you to build your fbPageOptions preferences by selecting option values from a form.
- Added fb.ajax() to the library functions to make ajax calls as simple as possible.
- Added updateNode parameter to fb.ajax() to enable populating a div with the fetched contents without the need to define a callback function to do it.
- AJAX requests are now sent with setRequestHeader('X-Requested-With', 'XMLHttpRequest') so that server side pages can know it is an ajax request coming in.
- You can pass custom headers in your fb.ajax() calls using the new 'headers' argument.
- Rapid-fire AJAX requests will be queued and initiated when the preceding one completes.
- Sped up resizing and fades in IE and old Opera.
- Added fbClassOptions which allows you to assign floatbox options or preferences to groups of anchors based on their class attribute.
- New thumbnail popup classes 'fbPopright' and 'fbPopleft' added to compliment the previous 'fbPopup' and 'fbPopdown' capabilities.
- Can now direct load Yahoo and Vimeo videos (along with Youtube) by using the simpler page urls instead of the embed source urls.
- Direct loading of .asf files using Windows Media Player.
- allowScriptAccess added to the parameters that you can pass to direct loaded flash.
- Image cycler items can now have per-item interval times.
- Can use data-fb-src in the cycler instead of the longdesc attribute.
- onItemStart and onItemEnd callback functions changed to beforeItemStart, afterItemStart, beforeItemEnd and afterItemEnd. (The old ones still work.)
- All before* callbacks will cancel the floatbox action if the callback function returns false.
- Added afterFBLoaded callback that you can use to reliably attach your DOMContentLoaded javascript.
- fb.start, fb.tagAnchors and the library functions getElementsByClassName, getStyle, addEvent, removeEvent, getOuterHTML, setInnerHTML, and ajax can now all accept a node's id string in place of the actual node element parameter.
- fb.getStyle() library function has been extended to convert IE's currentStyle values to pixels to make the function more useful as a library utility.
- Added maxIndexThumbSize to scale down the size of the popup thumbnails shown with the index links.
- Replaced the showCaption option with titleAsCaption, which controls whether an anchor's title attribute will be used as the floatbox caption.
- Language localization improvements: Korean added, Hebrew added, Polish corrected and updated.
- Improved IE version detection to better handle IE8 in emulation mode.
- No longer zooming in/out to anchors that are off-screen. Floatbox will start from the screen center in these circumstances.
- Adjusted css rules so that they apply to the floatbox elements but not to the content inside the floatbox.
- Added height:100% to fbContent and media objects to override height:auto from user css.
- Set background-color:transparent for all floatbox divs (to over-ride global client css backgrounds)
- Reworked the internal getLeftTop function for better positioning in scrolled elements and other obscure circumstances on older browsers.
Bug fixes
- Image zoom start and end positions would be out of place if containing elements had -ve left or top offsets.
- Image zoom start position was off if a thumbnail image had padding applied.
- Identical anchors in an iframe could fail to start on first click, but were ok on subsequent clicks.
- Callbacks defined in anchor options could be called twice.
- On rare occasions the cycler could fail to start cycling on initial page load (seen only on webkit).
- A cycler on the main page was failing to restart after a cycler in a child floatbox was shown.
- In gallery sets with animations disabled, images could briefly flash the new image early (before resizing) with distorted dimensions.
- fixed jumping bottom border when enableDragResize was active.
- fb.getLeftTop was not using the builtin getBoundingClientRect function when it was available, resulting in a small performance hit.
- The cross-frame checker would mis-identify a url as being on the local domain if the protocol portion of the url was not specified (i.e., the url began with '//').
- Items that had '%' or 'max' width or height could be resized smaller than minContentWidth/Height.
- Tweaked the printContents routine to work around IE failing to fire body.onload in obscure circumstances, thus failing to launch the print dialog box.
- Hidden divs that had a hyphen, colon or period in their id attribute would not be found.
- Removed shadow support for IE6 due to unsolvable display problems.
Known Problems:
- No round corners or shadows for IE6 (cleanly falls back to square corners).
- No fixed positioning in IE6 (disableScroll doesn't work).
- IE 6 & 7 mess up animated gifs shown inside a floatbox.
- Some flash files won't play well with ff2/mac.
- The keyboard handler doesn't work in Firefox in a secondary non-modal floatbox until after a box element has been clicked.
- For flash in SeaMonkey 1.x, and both quicktime and flash in Firefox 2.x, the page won't be scrollable (content might be bigger than window, but at least it's still draggable).
- Esc key doesn't work in Maxthon v1. (Not floatbox-specific)
- FF2 forms cursor won't blink if form is bigger than the window.
- Firefox's back button won't work correctly after an iframe's content has been updated. (Not floatbox-specific)
- Opera showing a cyler image set on a right-to-left layout page will reset the horizontal scrollbar to zero at each image change.
- On right-to-left layout pages, Webkit browsers (Chrome, Safari) will briefly flash the horizontal scrollbar when doing an animated box sizing.
v3.53.0
2009/07/27Enhancements
- Added image and thumbnail cycling which lets you fade in and out through a set of images or thumbs on your base page.
- Improved shadow graphics for more subtle, less 'smudgey' shadow effects.
- The graphics for the bottom and top round corners and shadows have been increased from 3000px to 6000px to accommodate really large panorama photographs.
- Youtube videos can now be direct loaded using the youtube page url as an alternative to using the youtube embed path.
- Can now direct load Windows Media Player content.
- Keyboard handler is friendlier to forms loaded from an inline div or AJAX, leaving the tab, enter and spacebar keys active on the form.
- Language localization files added for Icelandic and Catalan.
- Spanish language localization file updated and improved.
- "theme" option changed to "colorImages", "colorHtml", "colorVideo" and "color" rev tag or page option to allow setting a default color theme individually for each of the 3 main content types.
- New option "cacheAjaxContent" added to allow static AJAX content to be cached, thereby helping performance a little bit.
- The API reference is greatly expanded with many useful utility/library functions documented. You can use the floatbox API for many DOM manipulation activities.
- The built-in AJAX library function has been expanded to support POSTs as well as GETs.
- Javascript coming in to floatbox from an inline div or a direct string is now parsed and executed. Previously, only script in AJAX content was executed.
- Replaced window.onload usage with addEventListener and attachEvent which may help avoid very rare conflicts with other javascript.
- Will now recognize a rev option of "type:image" in addition to the previous "type:img".
- The license key can now be added directly to the floatbox.js default options or fbPageOptions as an alternative to setting in the licenseKey.js file.
- "installBase" setting can be used to point to the floatbox install location if you have renamed floatbox.js to something else.
- You can now check the status of your license key by typing "javascript:fb.key()" in your browser's address bar.
Bug fixes
- loadPageOnClose could fire when a secondary box is closed. Now it fires only when the primary box is closed.
- getIframeWindow & getIframeDocument would fail to return the current floatbox iframe when no parameter was passed.
- Script coming in to floatbox via AJAX could sometimes be executed twice. Now it will execute once only.
- License key could fail on a domain with a '0' in its name.
v3.52.2
2009/06/07- Added capability to use multi-domain registration keys (so one deployment can go to multiple target sites).
- Under rare circumstances, the box could zoom out to the top left page corner instead of to the starting anchor when ending.
v3.52.1
2009/05/27- Fixed: Could not right-justify caption because infoPanel width was miscalculated when round corners were present.
- Fixed: Complex caption content could have the wrong height calculated causing it to overflow the box frame. (It was measured before the browser had completely rendered it.)
- Fixed: Floatbox could halt in IE6 when minContentWidth or Height was less than the native image dimensions.
- Fixed: Gallery set of non-image items could load the overlay navigation preventing mouse access to floatbox contents.
- Added 'menu' as an available parameter when direct-loading flash content.
v3.52.0
2009/05/20Changes
- Floatbox now requires a license key file tied to your registered domain name to be installed in order to prevent periodic popup registration reminders from appearing.
- The floatbox js files are now provided in compressed form only. There is no longer separate compressed and full-text files in the zip package.
Enhancements
- Fullscreen flash is now supported, including for youtube.
- minFlashVersion option added for direct-load flash content that needs a particular version of flash (or greater) to run correctly.
- Strings displayed when a required plugin is missing or is too old are now translated and in the language files. Visitors will get these messages in their native languages.
- The number of quicktime file types that can be direct-loaded has expanded to .mov, .mpg, .mpeg, .movie, .3gp, .3g2, .m4v, .mp4, & .qt
- Youtube hi-definition parameter &ap=%2526fmt%3D18 can now be added to youtube direct-load hrefs without conflicting with MSN's 'ap' autoplay parameter.
- The start function can now accept a string of html markup to be shown directly in a floatbox.
- You can now scriptomatically start multiple boxes simultaneously.
- Slovenian language localization file added.
Bug fixes
- hideFlash was failing to hide some youtube embeds on webkit browsers.
- A second fetch of an iframe content page could occur due to mishandling of image preloading when standalone items were shown.
- IE 7 and earlier could fail to autodetect the install path for a page running from inside the floatbox install folder itself if a simple (no folders) relative path was used in the include lines.
- The print module would fail to load if showPrint was set in fbPageOptions and not directly on an anchor.
- Floatbox would cause a 'mixed page mode' warning when run on https/ssl pages.
- Fixed bad fbPopup positioning when the anchor was inside one or more position:relative divs.
- hideFlash was failing to hide some simply-defined flash objects, most egregiously, ones that floatbox had direct-loaded itself.
- IE could throw an error if an item's scrolling option was not valid (i.e., not one of 'auto', 'yes' or 'no'.)
- IE6 could sometimes fail to autoStart because it was waiting for the load of the transparent png helper file to complete.
- A box closing down to an anchor that has been moved offscreen (possibly a dropdown menu anchor) would chase that anchor offscreen. Now fb will close to the screen center in those circumstances.
v3.51
2009/04/23Enhancements
- Added allowFullScreen parameter to direct-loaded flash. If your flash file has full-screen support, this will work from a floatbox.
- Added afterPrint callback function. Handy for closing the box when printing.
- New options minContentWidth and minContentHeight restrict how small a box can be set through drag resizing and when navigating between resized items.
- All floatbox control widgets now have their background set explicitly to transparent to avoid conflicts with css rules that globally set backgrounds.
Bug fixes
- Some flash was continuing to play sound after the box closed.
- Fixed failure to launch from a flash getURL call due to the start function having a return value.
- Fixed IE6 failure to launch from a flash getURL call due to self-destruct code in the transparent png handler.
- Minor positioning fixes to exactly center horizontally and to allow hard-setting a top postion of zero.
- Would not zoom in from a thumbnail if the thumb had align or float positioning applied to it.
- Two instances of mis-declaration of variable "t" as a global instead of local var. This could cause conflict with other javascript that also use a global var named "t".
v3.50
2009/04/10Enhancements
- Round corners! - 8, 12 and 20px radius, with and without a 1px border.
- Modularized! - now dynamically loads modules as required resulting in faster load and initialization.
- Install and graphics folder paths are now auto-detected eliminating the need to manually add install path info into floatbox.js (which a lot of people failed to do).
- Callback functions added. You can now set the following tasks to run as required: onItemStart, onItemEnd, beforeBoxStart, afterBoxStart, beforeBoxEnd, afterBoxEnd, onPrint.
- Hidden div content is moved, not copied, to avoid duplicate IDs. This allows for dynamic update of hidden div content.
- The loading gif that appears over thumbnails while waiting for a zoomed image to load is now normal size and not stretched to the thumbnail size.
- Javascript that is included in content loaded via ajax is now parsed and run because browsers often fail to run it on their own.
- Added Silverlight .xap direct load support.
- Direct load of flash can now pass most any parameter (wmode, bgcolor scale, base, play, loop, quality, salign) on the href's querystring.
- Direct loading of DailyMotion and Metacafe flash.
- Easier use of the compressed files. Just point your include lines to the "compressed" folder.
- The transparent png shadows now work on ie6. (But ie6 still doesn't get round corners due to rendering errors.)
- Now prefers assigning a class of "floatbox" to anchors instead of setting the rel attribute (but still recognizes old-style floatbox rel attributes).
- Added "group" option for the rev tag as the preferred method to group items into gallery sets.
- New sizeRatio option allows setting dimensions to maximum that will fit the screen while retaining a defined width/height ratio.
- New enableDragResize option allowing users to manually resize the displayed floatbox. Retains width/height ratio for images.
- proportionalResize option added to force proportional drag-resizing on html content floatboxes (good for flash in an iframe, for example).
- stickyDragMove and stickyDragResize options added which cause user-initiated size and position changes to persist across different items in a gallery set.
- centerOnresize option added which keeps the box centered if the user resizes the browser window.
- centerNav option which will center the < prev | next > controls in the middle of the box frame.
- imageClickCloses option added which allows closing the box with a - you guessed it - click on the image.
- randomOrder option added which will randomize the order of your gallery sets (sometimes a nice option for slideshows).
- Added utility functions to easily get a floatboxed iframe's document and window.
- Added fbChildOptions for setting secondary box options preferences from the host page.
- Better sequencing for less background flashing during transitions. Now you get no black between image changes if animations are off.
- Removed spinning "loading" gif between item change-overs. It was distracting.
- Added white background to the zoom-in image to help out images that have transparency.
- Image pre-loading is now started from window.onload so it cannot ever compete with the page load for network or browser resources.
- Print... and Info... text is now styled from the css for easier customization.
- You can now use either a data-fb-options attribute or the rev attribute for assigning floatbox options to anchors. This lets you use rel="nofollow" for search engines.
- New Bulgarian(bg) and Romanian(ro) language files (we now have support for 27 languages).
- Russian(ru), Dutch(nl), Italian(it) and Greek(el) language files corrected and updated.
- Now properly handles escaped chars of the form { in the caption.
- No longer resets/refreshes an iframe's content when fb.resize() is called.
- Added themed loading_iframe backgrounds that are displayed while iframes are loading. Previously the display was always white, regardless of the color theme in use.
Bug Fixes
- Fixed iframe printing. Disabled cross-site iframe printing (which can't work).
- When disableScroll was true and the page scrolled, images zooming out on end would start too high on the screen by the scroll amount.
- Ctrl-Tab didn't work when a floatbox was open. Now all alt/ctrl/shift modified keys are passed through to the browser.
- Ctrl key was ignored in IE on floatboxed items inside an iframe.
- Fixed keyboard handler. Iframes could refuse to load in IE if the keyboard handler was turned off.
- fbPopdown wasn't in the css so no "popDown" could function.
- Index links wouldn't work when run from a secondary box.
- Made the css for the caption color more specific to avoid css conflicts.
- Changed opacity handling to avoid problems with very small opacity values.
- outsideClickCloses would not work if the overlay opacity was set to 0.
- Screen would flash to white for a split second when ending a box with flash in it.
- Eliminated scrollbar flash when switching to a wide gallery item.
- Eliminated screen flash that could happen when the page was scrolled and a large floatbox item had stretched the body.
- Fixed bug where IE could lose the mouse on drag because iframe content was not hidden while dragging.
- Querystrings could trash floatbox if they had the same value as floatbox properties or functions. Now they can't.
- An extra and erroneous get request for the host page was being made which could disrupt state or database driven sites.
- The zoom image could start and end off-position in some rare complex hierarchies of nested and floated divs.
Housekeeping
- Removed support for really old browsers (ie5.5, safari2)
- printCSS option can now be set in both the default and the page options.
- Box now closes down to the anchor pos even if that anchor is scrolled offscreen.
- Non-zoomed start-at-anchor ends at the same starting anchor.
- Better/simpler handing off of keyboard handler between boxes.
- Simplified event finding in IE. No more recursing the frame collection. (faster, safer)
- Better frame recursing for hideElements that does not depend on try/catch exceptions for x-site iframes
- Cleaned up the way page and rev options are managed.
- Tidied up use of 'this' vs. 'fb'.
- Tidied up shadow positioning and shortened the css.
- Split colour themes off into seperate css files loaded as modules on demand.
- Renamed .fbParent to .parent (but kept .fbParent too).
- Now using getBoundingClientRect when available (faster box starts).
- loadAnchor() now returns true/false if it succeeds or not.
- Auto-loaded multimedia objects now use the floatbox level to create a unique id for the object (id= fbObject, fbObject1, fbObject2, etc.)
- The autoSizeImages and autoSizeOther options have been renamed autoFitImages and autoFitOther (but the old option names still work too).
- The start() function has been modified so that it is now the preferred way to load floatbox from code. loadAnchor() is now considered a deprecated legacy function.
- Moved doSlideshow option into the js default options.
- For autoGalleries, rel="nofloatbox" allowed as a className too (class="nofloatbox").
v3.24
2008/12/01Enhancements
- Ctrl-click and shift-click on image or iframe content opens in a new browser window or tab instead of loading floatbox as if a normal click was done.
- New rev attribute option "href" added to provide alternate content for javascript-disabled browsers. See the instructions for details.
- RTL (right-to-left) page layouts are now supported with reversed navigation and updated screen measurements and layout.
- Slovak and Arabic localization languages added.
Bug Fixes
- Floatbox was not releasing the keyboard handler for Opera, thereby disabling the keyboard after floatbox was closed.
- In secondary floatboxes, the overlayed previous and next controls and the resize magnifying glass in the top left would not display. This was because their opacity values were mistakenly divided by 100.
- In mixed content galleries (with both images and html pages), the wrong format for the "(x of y)" item count display was being used.
v3.23
2008/11/23Enhancements
- The early DOM loading routine that initializes floatbox prior to all images being rendered on a page has been updated and optimized. Floatbox is now much better at early loading for IE browsers and it is now quite difficult to click an anchor before floatbox is ready.
- The translucent overlay is displayed early when floatbox is zoom-starting from an image that is slow to load.
- The fb.resize function now checks to make sure dimensions will change before applying the sizing change. This is to avoid infinite call loops when resizing an iframe via onload. (An iframe will re-run its body.onload function after a resize.)
Bug Fixes
- Opera would crash floatbox if hideFlash was true and the page included an iframe with a src from a different domain.
- IE would crash floatbox if content inside an iframe included indexLinks and that content was refreshed without re-loading the page.
v3.22
2008/11/15Bug Fixes
- Captions displaying html anchors whose href attributes included a multi-item querystring (one with ampersands in it) would fail to render correctly.
- Floatbox options could erroneously be picked up from anchor href querystring items within an html caption.
Enhancements
- Shadow effect has been extended. In addition to the "drop" shadow on the left and bottom sides, you can have a "halo" shadow on all four sides. Shadow size is adjustable to 8, 12, 16 and 24 pixels.
- Browser cacheing of content fetched via AJAX is now disabled. This helps when a reload of dynamically updated content is required, especially for IE.
- Inline div and multi-media content is now fetched at display time, not at initial load time. This can also help reloading of dynamically updated content.
- Popup thumbnails that aren't floatbox enabled will now hide when clicked.
- Croation language localization file added.
v3.21
2008/11/03Bug fixes
- Browser detection routines would break when floatbox was included on pages that also ran the prototype.js library (and quite likely other libraries as well). Floatbox looked for the presence (or absence) of document.getElementsByClassName to detect old Opera and Firefox versions, but prototype adds this function for those browsers. Browser detection is now done exclusively with the navigator appVersion and userAgent strings.
- Some installs of IE7 ignore "return false" in the onclick action of an anchor element. This would cause IE to try to load the page referenced in the href attribute of the close link. Depending on page configuration circumstances the result could be a base page refresh, unwanted navigation to a default page, a directory listing, access denied, page not found, or a session re-authentication prompt. This is fixed by setting the event returnValue to false for IE just prior to executing "return false".
- IE6 can show transparent speckles in place of full-black pixels when opacity is less than 100%, messing up fades a little bit. This was fixed by setting the content background color to black for image displays in IE6.
Enhancements
- autoStart option has been extended to accept 'once' as a parameter. An item with "autoStart:once" on its rev attribute will be auto-shown only on the first page load of a session. (Client browser must allow session cookies.)
- Floatbox's main content div's background color is now white instead of transparent. This is helpful for html content that is being displayed when the color theme is neither 'auto' nor 'white'.
- autoGallery option added to the floatbox.js options section.
- Finnish language localization file added. (Thanks JIK!)
v3.20
2008/10/19Enhancements
- Floatbox can now auto-create an image gallery without rel and rev tag markups on the page anchors. Just set autoGallery to true and every link to an image on a page will get added to a floatbox gallery (unless the rel attribute = "nofloatbox"). There's also a new autoTitle option which will set the title attribute, and thereby the floatbox caption, for each autoGallery item.
- Print option added. Displays a print link in the info panel which will print just the contents of the floatbox, not the entire page. You can assign css settings to the print document if needed for proper print layout.
- Can optionally display a series of index links for galleries in the caption or info panels with popup thumbnails when hovered. The index links look like this: 1 ... 12 13 14 15 16 17 18 ... 99. The number of links shown is controlled by the new numIndexLinks option.
- By popular demand resizing animation can now be split, setting width or height first and the other dimension in a second pass.
- Info and Control panels can now be located at the top, bottom, left or right. Info panel can be centered.
- Positioning of floatbox on the screen can now be controlled with new boxLeft and boxTop options. Set these to fixed pixel values, percentage offsets, or 'auto' for default centering.
- Configuration options such as urlLanguages, preloadAll etc., can now be set as page-specific and query-string options, not just in the .js code. Use the new fbPageOptions object syntax as described in the docs to do this.
- Floatbox can now be dragged (relocated) with the mouse. Disable this with the new enableDrag option if you like.
- Smarter loading when included on cross-domain iframe heirarchies where a child iframe is coming from a different domain than a parent document. Now floatbox will attach to the topmost document that is in the same domain, but will not try (and fail) to attach to a document in a different domain.
- Opera and just about all Mac browsers except Safari 3 can't show custom cursors. The resize tool is now set to the top-left widget for these browsers.
- Slideshow is now paused if an "Info..." item is clicked.
- For stacked floatboxes, if tooltips are set to show once they will be cleared for both the parent and child boxes, not just the current floatbox.
- A new class of "fbPopdown" sets up popup thumbnails similar to "fbPopup" ones, but the fbPopdown class will appear beneath the hovered anchor, not above it.
- New API addition: fb.fbParent var is available to reference the floatbox immediately beneath the top one when there are stacked boxes.
- An autoStart request passed in the page's URL query string will no longer invoke an item that has showThis:false as a rev attribute option. This gets around a problem of launching a slideshow when you are trying to autoStart a single item from a group.
- Lots of testing and changes to increase reliability in old browsers and on OS X Macs.
- New language localization files: Polish, Czech, Galician, Norwegian and Vietnamese.
Bug fixes
- Floatbox could fail on exit and cause the host page to load a directory or a default page when displaying an image that was launched with fb.loadAnchor. Some safety checks were added to the routine that looks for thumbnails associated with image anchors and this has fixed the issue.
- A combination of two bugs consipired so that attempting an AJAX load of an item whose anchor includes a query string with a reference to an image would fail.
- Flash that was added to a page using the swfobject library would fail to unhide on floatbox exit.
- Floatbox would fail in Safari 3.0 due to the RegExp.compile function not being available in that browser.
- Direct loaded Flash was not displaying in a number of older browsers on Macs. Flash's wmode was changed to "window" for these browsers and they seem to work fine now.
- Direct loaded Quicktime was not displaying in Safari on Macs. To fix this, an embed is used rather than the standard object syntax if a Mac/Safari browser is detected.
- The 404 image that is displayed for image links that can't be found would break if shown a second time in a floatbox session.
- Safari 2.x would not run floatbox at all. Now it does, but not very well. This is not a supported browser.
- Scrollbar flashes that could appear on floatbox start and during transition between gallery items have been eliminated.
Changes
- If width and height are not provided in the rev tag for a non-image item in a gallery group, dimensions will be inherited from the previously shown item.
- Because the control panel can now be located at the top of the floatbox, all options and DOM object names that referenced upperNav and lowerNav have been changed to navOverlay and navButton. If you have the old syntax nav options on your pages, they will still be recognized without making any changes.
- Secondary (stacked) floatbox background overlays now default to no animated fading.
- Compressed versions are now provided as gzipped files and instructions for use on Apache.
- The fb.rex collection of regular expressions has been discarded and the regular expressions disbursed throughout the code for easier readability and maintenance.
- The vertical positioning of the popup Prev and Next widgets over images has been improved and can no longer be pushed below the image.
- The frame buster buster that blocked attempts by external pages to reload themselves into the top document was removed. It only worked in IE and Opera and caused very obscure problems in a few circumstances.
- Floatbox DOM restructuring and css changes were made to support flexible positioning of the info and control panels.
- There was a documentation error that said to use loadPageOnClose:this to reload the host page. The correct setting was loadPageOnClose:self. Now floatbox will accept both "this" and "self".
- A documentation error that stated that setting width and height by percentage was not available has been removed. You _can_ set width and height as percentages of the screen dimensions.
- Modified keyboard handler attachment strategy which makes it a little more robust in complex stackings of multiple floatboxes.
v3.12
2008/09/13Bug fixes
- A serious problem with IE6 detection.
Floatbox used the jscript version number to detect IE6. In XP Service Pack 3, Microsoft updated IE6's jscript to the version used with IE7, which caused floatbox to recognize the browser as IE7. This misdetection created a number of problems for IE6 site visitors:
- no transluscent background overlay
- messed up drop shadows (IE6 can't render transparent png images)
- focus outline showing on clicked navigation controls
- select elements on host page could bleed through
- flashes during transition between items
- messed up positioning if disableScroll (aka fixed positioning) was configured.
There is still a lot of IE6 being used (>25% market share). Unfortunately, this means EVERYONE should update their floatbox installation. (There's also a version 2.x update down below with this fix in it, but that's the last udpate that will be made on that version stream.) If you want to just patch your current installation rather than re-download, see this forum topic for a replacement IE6 browser detect. But you really should update to the latest version to keep clean and current. - The Swedish language file was not saved as UTF-8 so the unicode arrow characters did not display.
- IE8 beta 2 was messing up its lower navigation layout in fixed positioning. As a precautionary measure, the lower nav controls were re-structured to avoid this in case the IE8 production release has the same problem.
- IE on XP is unable to display the tooltip arrow characters unless the XP language packs are installed. A detect for XP was added and the tool-tip arrows switched to ascii art for IE on XP.
- Flash and Java would successfully hide only on the top document, not in child iframes. (updated 2008/09/15)
- Floatbox-enabled links inside ajax content could be a little slow to initialize causing them to open in the top doc if clicked quickly. (seen only in Chrome, updated 2008/09/17)
v3.11
2008/09/08Bug fixes
- Some bad screen flashes were happening in Firefox 2.x when navigating between grouped items (like an image gallery). This was fixed by toggling fixed/absolute positioning rather than toggling display=none when measuring the screen.
- Flash in an iframe in Firefox 2.x was not getting any mouse inputs. This was fixed by setting postion=fixed for all iframes in Firefox2 that fit the current screen dimensions.
- Again with the firefox - FF2 was not displaying video in quicktime movies. Again, the fix was to set position=fixed for this combination of browser and content.
- Firefox 2 was refusing to display some flash, and Firefox 3 was refusing to display some other flash. Both of these were fixed by forcing wmode=opaque for FF2 and wmode=window for FF3.
- A stoopid typo was preventing the loading gifs from displaying when initial content was slow to load.
- IE8 beta2 was sometimes choking when appending content from an inline div. Fixed by wrapping that code in a try/catch and setting innerHTML if it fails.
- AJAX content loads could show "Unable to fetch content..." briefly before showing intended content. Not no more. (This fix was patched into the v3.11 download on 2008/09/10.)
Enhancements
- Since support for fixed positioning had to be added to fix the Firefox problems, a configurable option - disableScroll - was added which allows floatbox to be shown with position=fixed. Setting disableScroll to true locks floatbox in place on the screen and causes it to ignore any scrollbar actions. (Except IE6 that can't do fixed positioning.) Note that fixed positioning is not applied if the floatbox content won't fit in the available screen area, because we'll need the scrollbars to work in that case.
- A beneficial side effect of setting fixed positioning for Firefox 2 iframes is that now the blinking cursor in form fields will no longer vanish.
- A small page named loading_iframe.html has been added to the graphics folder. Iframes load this file before setting their src to the desired content. This lets floatbox display the rotating loading gif while slow iframe content comes in.
- Language localization file for Swedish added.
Housekeeping
- A bunch of code changes/improvements that I'm too lazy to list here because it's past my bedtime.
v3.10
2008/08/313.10 is a major new release with many new features and capabilities.
See the new demo and instructions pages for details, and please visit the new forum for feedback and support.
- Direct loading of flash and quicktime
- Direct loading of YouTube, Yahoo Video, and many others
- HTML content via AJAX and inline DIVs
- Zoom from thumbnail to image and back
- Popup thumbnails
- International language localization
- Graphics without English text for non-English browsers
- Better animation fades and resizes during transitions and when closing
- Multiple floatboxes can be stacked
- Info box for descriptions, EXIF, help, etc.
- Resize images by clicking on them (with a custom cursor)
- Auto-detection of content type
- 3D drop shadows
Some things have been removed.
- Fixed positioning (aka, disabled scrollbars)
- IE quirks mode support. Now all your floatbox pages need valid doc types.
- Modal mode. I don't think anyone was using this, and you can re-create it through the other options if you need to.
- Resizing width first or height first. V3 only resizes dimensions all at once.
- Large sized control gadget graphics and associated css stylesheet no longer included.
Known problems.
- No blinking cursor in forms for Firefox 2. (Fixed in v3.11)
- QuickTime video does not show in Firefox 2. It plays, but no video. (Fixed in v3.11)
- Sizing and positioning is off in IE7 if the browser page zoom is more than 100%.
v2.47
2008/09/13Bug fixes
- See the v3.12 change log notes above for details on the IE6 browser detection problem.
v2.46
2008/08/04 (updated 2008/08/25)Bug fixes
- IE6 select elements could be messed up after floatbox hid and then showed them. Now unhidden elements have focus applied to them for firefox 2.x, which is the only browser that needs that done.
- IE6 on an SSL site would throw mixed-mode security warnings when loading iframe content. Fixed by adding an empty src value to floatbox iframes when they are created.
- Relative links in a hierarchy of iframed pages could get lost with floatbox being unable to determine what the links are relative to. Fixed (I think) by using anchor.href instead of anchor.getAttribute('href') in the code. Browsers seem to expand the .href values into absolutes for us.
Enhancements
- Added option to hide Java applets when starting floatbox. Applets can bleed through the overlayed display the same way flash can.
- Added additional default div settings to the css to reduce the potential for conflicts with other css styles.
Housekeeping
- I grew weary of seeing all those "Floatbox.prototype" statements so I collapsed them into one prototype object.
- Fixed minor logic error in firefox browser detection.
v2.45
2008/07/07Bug fix
- A nasty bug: Firefox2 could hard-crash on floatbox exit if there was an object element in the displayed floatbox content. Anyone displaying multi-media or other plugin content with floatbox needs v2.45.
v2.44
2008/06/28Enhancements
- I was very disappointed to see that Firefox 3 is now the worst browser at displaying content based on javascript DOM instructions, throwing off a bunch of spurious renderings and flashes. I've added some short delays to the code which allow ff3 time to catch up and remove some of the problems. Unfortunately, it will still bleed through underlying iframes while rendering images on slower machines.
- By popular demand (one person asked for it) you can now turn off aggressive image preloading by setting preloadAll to false in the floatbox.js file.
- The focus is now removed from the clicked anchor thereby preventing that anchor from having an outline when floatbox exits. Particularly important for Opera 9.5 which leaves a very strong blue box around active anchors.
Bug fixes
- A floatbox that was very close to full screen height and had a caption that wrapped could have the animated loading image continue to display behind iframe content.
- The controls (nav, close, etc.) could flash on the screen in weird places just prior to the floatbox opening up. These are now hidden until the box is ready.
v2.43
2008/06/21Updates
- Opera 9.5 is out now, and they changed the way screen measurements are returned. The result is that vertical positioning of floatbox is way off in Opera 9.5. In some cases it can be off the screen. (They're returning body height now in the property where they used to return screen height.) Sorry, but everyone should move up to v2.43 to support Opera visitors.
- The good news on Opera 9.5 is that their javascript engine is now much faster (it's still slower than just about everyone else though). This means the animations now run adequately (but not great). I've removed the allowOperaFades (defaulted to false) option.
Bug fixes
- Again with the Opera. The browser would crash every time a child iframe with floatbox stuff in it would get refreshed (but not if the whole page refreshes). Not no more.
- In IE6, the overlay would only cover the top inch of the screen on initial load until the floatbox was drawn, at which point the overlay would go full screen. It is now full screen right from the get go.
- For firefox2 on a mac, flash objects that were hidden at load time would not become visibility after termination until they were clicked. Now floatbox clicks them for you at the time of unhiding.
v2.42
2008/06/03Enhancement
- HTML entities are now decoded before being assigned to the caption. This enables placing clickable anchors in the floatbox caption. Encode the following characters in your caption strings: &(&) "(") <(<) >(>) and optionally '('). If you're using php, the htmlspecialchars() function will do this for you.
- You can now have multiple items with the same href but different title or rev options on the same page. Previously, only one matching href per page would get used.
- Helper added so firefox 2 on a Mac will show flash objects after they are un-hidden. (2008/06/15)
Bug fix
- Play and pause controls could fail to display when running a slideshow for the second time. (This fix was patched into v2.41 too.)
Housekeeping
- The innerHTML assignments that update the caption and item count display are now wrapped in try/catch in case the caption string has malformed html in it.
- Unnecessary quotes removed from the defaultOptions object. (2008/06/15)
v2.41
2008/06/01Enhancements
- Added 'enableWrap' option. When set to false this disables 'previous' navigation when on the first item of a collection, and 'next' navigation from the last item. Useful for displaying something like a sequenced instruction set where navigation wrapping doesn't really make sense. Note: Adding this option required some new images and css changes. As always, if upgrading, upgrade the whole package. Don't mix and match versions.
- Added a 'caption' option that allows setting a caption via the rev attribute instead of the title attribute, thereby separating browser tooltip behaviour from floatbox's caption. To use this, put "caption:`Some caption string`" in your rev attributes. Note the backquotes - they're required.
- Added 'auto' as the default colour theme. This uses the black theme for images and the white theme for iframe content.
- Added 'allowOperaFades' option and set the default to false. Opera is atrocious at rendering opacity fades - very slow, very jerky, very irritating. It's best to leave this set to false to spare Opera users (all 12 of them) the self-inflicted pain.
- Moved image preloading out of window.onload and into the more reliable dom-loaded code. Too many pages have other javascript that stomps on window.onload and were thereby preventing floatbox image preloading from happening.
- Backed off on the image preloading aggression a little by inserting a 200ms timer between image preloads. This helps the suspension of preloads during floatbox item changes, improves loading of floatbox control graphics on slow connections and gives the underlying page more time to load its objects.
- Controls are now moved off-screen rather than hidden when they're not being used so that their background images will preload and be ready as soon as the controls are displayed.
Bug fixes
- Cleaned up some errors in some regular expressions that didn't materially affect behaviour.
- Eliminated an IE6-only display flash when fading in images by starting the fade at 0 rather than 10%.
Housekeeping
- Overhauled the instructions making them shorter and clearer.
- Changed the regexp tests for 'showThis' and 'autoStart' checking to allow the alternate options syntax (qryString-like, css-like).
- Enhanced the parseOptions routine so that it can accept backquoted strings containing otherwise toxic characters. This is to allow the 'caption' and 'loadPageOnClose' options to be set in rev strings.
- Removed some unnecessary empty string assignments.
- Changed array, object and regexp constructors to literals.
v2.40
2008/05/26Bug fixes
- The early loading routine could fire before the document was ready in IE in an iframed child document. Found a better alternative that now seems to correctly load in IE for both framed and flat pages.
- If an iframed child document was reloaded, groups of floatbox items could get duplicate items added to the existing list and the item count could double. (This is when only the child was refreshed, not when the top doc refreshed.) Now the tagAnchors routine checks for pre-existing duplicates before adding a new anchor to the list.
- When navigating or reloading a child iframe document, a previously captured anchor could be dereferenced but still be in the array of tagged anchors, causing code failure when a new anchor was clicked. Derefenced anchors are now removed from the floatbox array at each load.
- IE loads nested iframes in reverse order (child first) and will then mistakenly garbage collect the top floatbox object when the first-loaded child is refreshed/reloaded. The init routine is restructured so as to force loading documents in parent-first order. IMPORTANT: You now have to have floatbox.js included at each level of a multi-level nested iframe structure.
Enhancement
- Added new option to have floatbox session cookies apply to an entire site or be restricted to the active subfolder. (Previously was always subfolder based.)
Housekeeping
- Changed all the core member functions to prototypes to reduce memory leaks in IE.
- Restructured the css and images folders for the larger control graphics. These are now off in their own images/big subfolder, making them easier to delete if you never use them. I haven't seen anyone use them (by referencing floatbox_big.css) and one day I may drop them from the package.
- Reworked most references to 'self' and 'top' so that maintenance of framebox.js is easier and the intent of the code is more apparent.
v2.39
2008/05/22Enhancements
- Added a "404 - not found" image that is displayed if the image pointed to by href can't be loaded. Previously you would just get the "loading" box forever.
- Changed right click behaviour on the upper nav panels so that the image context menu appears, allowing image saves, viewing image properties, etc. (Note: doesn't work in Opera or Firefox 3 RC1.)
- The navigation control hrefs are now updated with the previous and next urls so that the browser status bar display makes more sense. (Note: these hrefs point to the current image in Opera and Firefox 3 RC1 so that right-click "save link as..." fetches the current image (see the right-click enhancement above)).
- Initial display and resizing of the floatbox now waits until the overlay has faded in instead of happening at the same time, yielding smoother and sequential animations.
- The initial display of the 'loading' floatbox that occurs when the first item is slow to load is now delayed on a timer for a half a second to avoid floatbox size jumps on quick loading items.
- Set css over-rides for floatbox <a> element borders, backgrounds, margins and padding so that styles set elsewhere don't interfere with the navigation gadgets.
- Set visibility=visible on the floatboxed item in case other css or js is setting things to hidden.
Bug fixes
- Opera was failing to display iframe content. It would just show an empty floatbox and the hourglass unless an alert was fired or the .src property was toggled to "" and back. (Opera is almost as big a pain to code for as IE is. I'm not sure why I bother.)
Housekeeping
- Reorganized user-settable options section into catagories (general, navigation, animation, etc.).
- The spacing in between the lower panel controls and caption is now set in a variable (a property actually) near the top of the code so you can tighten it up more easily if you need to.
- Now using the more efficient + operator to convert to numbers instead of parseInt and parseFloat.
v2.38
2008/05/11Enhancements
- Added support for launching floatbox from image map areas. See the instructions for details and the demo page for an example.
- Added 'random' to the resizeOrder option choices to allow a mixup of width first, height first, and both at once resizing.
- Changed 'overflow:auto' to 'overflow:hidden' in the css so that narrow titles (captions) with long words in them will truncate rather than display scrollbars.
Bug fix
- Background overlay did not completely fill the screen if the following conditions were met: IE6 or IE7 quirks mode, content inside an absolute positioned element, and screen was scrolled.
v2.37
2008/05/04 (revised 2008/05/09)Enhancements
- The empty floatbox (with the animated loading gif in it) is now displayed immediately upon start. Previously people on a slow connection or having other trouble loading the first image would get just the overlay and no floatbox until the first image completed loading.
- Alternate version which constrains the floatbox display to a containing iframe or frameset child is now included in the package. Use framebox.js instead of floatbox.js to do this. See the instructions for details.
- The pause/play control background images are now preloaded so there is no apparent delay when the controls are first used.
- All timeout functions plus the callback functions for the fade and resize animation routines now use true functions instead of eval strings, making floatbox.js easier and safer to compress should you choose to do so.
Bug fix
- Setting options via cookies was broken for Opera. The cookie specs call for a limit of 20 cookies per domain. Opera enforces that limit. Each option was in a separate cookie and there were more than 20 of them. Now, only one cookie is written which contains all the options concatenated into one string.
Housekeeping
- A lot of cookie handling code was discarded and replaced with much more compact and quicker executing code.
- The scaling code that sized things down to the available screen space is now smaller and quicker.
- The string localization options are now all prefixed with "str", making them easier to exclude from being lower-cased and added to the option cookie.
v2.36
2008/04/29Enhancement
- Since the use of 'P' and 'N' was removed from keyboard nav in v2.35, the upper nav graphics were redone so that those letters are no longer underlined. (The gif sizes changed, so floatbox.css is changed too.)
Bug fix
- Preserve case for customized localization strings.
v2.35
2008/04/23Enhancements
- Added resize functionality. A small resize button can be shown in the top left corner of images that have been scaled down to fit the screen or that are displayed larger than the current screen size.
- Animated resizing can now be configured to resize width first and then height, or height first then width, or the default behaviour of resizing everything at the same time.
- Due to a couple of reports of arguments between floatbox.css and other style sheets on the floatboxed page, specificity of references in floatbox.css has been greatly increased. This should cut down or eliminate css conflicts.
- Image preloading is now temporarily suspended during display redraws so that browser and cpu attention can be focussed on presenting smoother transitions.
- The showing of tooltips (nav hints) can now be configured to show once, show always, or show never.
- When tooltips are set to show once, they are now on a timer to ensure the user has had sufficient time to read them before they are turned off.
- Show-once tooltips are now turned off if the user navigates with the corresponding keyboard shortcuts (because the user obviously already knows the keyboard shortcut).
- When resizing between displayed items results in scrollbars appearing or disappearing, floatbox positioning will be adjusted to better fit the new visible display area.
- Control graphics have been updated for the blue and black themes to subdue the highlighted black controls a little and to make the blue controls less blue-on-blue.
- Improved colourization of the upper navigation graphics.
- Flash and IE6 selects that were hidden on the host page when floatboxed started are now not revealed on exit until after the overlay has finished fading out.
- Documentation is improved with a more concise instructions page and the inclusion of an options page detailing floatbox's 48 (yes, 48) configuration settings.
- Navigation hints (tooltips) are turned off if modal mode is in effect (because keyboard navigation is also turned off).
- Keyboard shortcuts now consist of only left and right arrow (prev/next), spacebar (play/pause), tab (resize), and esc (exit). The additional letter-key shortcuts have been removed because they are not necessary and they complicate communication to the user about how keyboard navigation works.
Bug fixes
- For IE6, the page overlay width could be slightly shy of the visible display width under particular circumstances. An additional screen measurement has been added which eliminates this.
- For IE, iframe content was displaying frame borders when configured not to. (The frameBorder attribute is case-sensitive in IE.)
Housekeeping
- The upper navigation was previously built from nested <a> elements, with the prev and next buttons residing inside the transparent nav panels. While this worked, it was a violation of the DOM model where anchors can not contain other anchors. They have now been split into sibling elements. Doing this has made upper navigation function properly under IE8 beta 1.
- Default options are now set in an Object structure, rather than as member properties.
- Parsing of options from the different sources has been greatly streamlined and eliminates code that required relisting of all the option names.
- Keyboard handlers now call the mouse event handlers for the navigation controls rather than replicating that handler code inside the keyboard handler function.
- The image preloading routine now supports preloading a single image in addition to its previous behaviour of chaining preloads for all images. This is to enable preloading of the first image without major disruption to the main document load.
- Reading of iframe options from the rev tag now uses the generic option parsing routines rather than replicating some of the code inside the loadItem function.
- Resizing of images was moved out of the onload handler for images and into the setSize() function where it belongs.
v2.30
2008/04/12 (revised 2008/04/15)Significant look and feel improvements - floatbox now looks the way I want it to. Also, improved support for multimedia content in iFrames.
Enhancements
- Redrew all the graphical controls. The new ones are much tidier, smaller, less obtrusive and are a better visual fit with different underlying web site designs.
- Completely reworked all the color themes. They are now less garish and quite presentable. They're also a good base from which to start your own theme customizations.
- Added support for exact sizing and no scrollbars for iframed content, enabling effective display of multimedia content with no centering or framing issues.
- Tootips (the yellow popup navigation hints) appear only once for each control. Once the user has seen them, they do not intrude for subsequent mouseovers.
- Controls in the lower panel now have mouseover highlighting. Thanks go to MECA Computer Consulting Pty Ltd. for suggesting and demo-ing this.
- More aggressive image preloading that improves responsiveness when a user clicks on an image other than the first one.
- An alternate css style sheet (floatbox_big.css) and associated graphics are included which provide bigger nav controls than the default.
- The stylesheets have been restructured and commented to make customization easier.
- Autoresizing now is done in two passes rather than one. This helps get the height correct when the lower panel changes height between content changes.
- New option "enableCookies" added and set to false by default. This is so the cookies don't override the floatbox.js options while you are setting things up. If you want to use cookie options, don't forget to set this to true.
- Changed reloadPageOnClose to loadPageOnClose which now accepts "this" to reload current page, "back" to load the referring page, or a url to navigate to a new page when floatbox closes.
- Installation and configuration instructions are now included in the download package.
- Added disableScroll option which uses fixed positioning and thereby blocks scrollbar functionality for content that fully fits the screen. (This one is against my better judgment. I don't think you should disable your visitor's browser controls.)
Bug fixes
- Floatbox could fail to initialize on some pages in IE6 and IE7 quirks mode (no doc type) due to the window.frames collection containing non-existent child frames.
- The early loading code that allows floatbox to be active before all the page images are available was seen to cause IE7 to delay the load of the entire page. The early loading code has been reworked to avoid this occasional delay.
- Fixed jerky animated resizing in firefox when displaying iframe content.
- If an animated resize was interrupted before completion by another resize due to user navigation, the final positioning could be whack.
- Caption fonts were cut-off a little bit if the host page had a small font-size assigned to the document body.
- Eliminated a vscrollbar flash that could sometimes occur when going from wide to narrow content.
- Scrollbar flashes and small floatbox size jumps could occur during resizing due to inconsistent application of border measurements.
Housekeeping
- The floatbox_ifload.html file that provided smoothish transitions between iframe content changes is no longer required. The iframe content is now simply cleared during content changes, providing the same effect with less fuss.
- The animated resizing routine has been reduced in size and complexity and is now more comprehensible.
v2.21
2008/03/31Enhancements
- Page-specific options can be set by a javascript function added to the document head. See the instructions page for details.
- Config options can be read and written through session cookies, enabling end-user-selectable preferences.
- Much better support for content in nested iframes. Iframes can be nested arbitrarily deep and have floatbox-enabled content at any and all levels.
Housekeeping
- Serious code restructuring. Prototypes changed to member functions. Better global var handling (enabling the better iframe support).
v2.20
2008/03/29Bug fixes
- More sizing and positioning trouble. Horizontal centering was off if the underlying page was scrolled to the right. Vertical poistioning and sizing was slightly off in some browsers if there was a horizontal scrollbar and the doc height was close to the window height. Both of these have been fixed.
- Failure to load for non-IE browsers on pages with no doctype.
Housekeeping
- Some code optimizations and tidying.
v2.19
2008/03/24Enhancements
- Added the ability to automatically start floatbox on host page load by including "autoStart:true" in an anchor's rev attribute.
- Added the ability to reload the parent page when floatbox closes by setting this option in floatbox.js or by including "reloadPageOnClose:true" in an anchor's rev attribute.
- Text for the "Image x of y" display was moved to the string configuration area of floatbox.js to allow language or other customization of this string.
Bug fixes
- IFramed content in Firefox was being pushed off the bottom of the screen if the host page was scrolled down. This was because iFrame content is set to fixed positioning to work around the blinking form cursor problem, but I was mistakenly adding the scrollTop offset to this fixed content. The scrollTop offset is now added only to absolute positioned content.
- Browser window measurements were off for non-IE agents when scrollbars were present. This was resulting in content being off-center and wrongly autoSized.
- Spacebar usage was not correctly taken over for Opera. Pressing spacebar in Opera for play/pause would scroll down and/or jump to another page. Floatbox now blocks onkeypress events thus forcing Opera to behave.
v2.16
2008/03/02Enhancements
- Lower navigation (prev||next) is now graphical rather than text. When it was text a user could mess up the layout by increasing the browser font-size preference. The new graphical nav controls maintain constant dimension and layout regardless of browser-side preferences.
v2.15
2008/02/20Enhancments
- The width of the mouse-over navigation panels on top of the image is now configurable using the "upperNavWidth" option in the floatbox.js configuration section.
Bug fixes
- If an item was displayed that had info panel content, then closed, then another item with no info panel content opened IE would display the old info panel.
v2.14
2008/02/17First public release.