jPlayer

HTML5 Audio & Video for jQuery

a project by happyworm

jPlayer 2.9+ Development notes

View the change log in the github repository for the continued record of jPlayer development.

jPlayer 2.8.0 Release notes

  • Released: 11th November 2014
  • [2.7.1] Bug Fix: Fixed the legacy Android fix to work with latest Android. This moved the android fix code to the loadeddata event from the progress event.
  • [dev] Code Clean: Refactored the Flash ActionScript, removing the TraceOut class from the Jplayer.as code and the happyworm package.
  • [dev] ARIA Feature: The autoBlur option will now either blur() or focus(). This helps maintain cross-browser behaviour when a user clicks on a GUI button.
  • [dev] New Feature: Added the noVolume state class for when the volume controls are being hidden due to the noVolume option. This helps GUI design by enabling a CSS rule to hide the volume controls.
  • [dev] jPlayer Repository Refactor: Added all download content to the repository and added a grunt build system. The example demos work within the repository, and use the built (minified) jPlayer files.
  • [dev] Refactor: Renamed the SWF file from Jplayer.swf to jquery.jplayer.swf
  • [dev] Refactor: The Flash jquery.jplayer.swf file is now compiled using the Flex compiler in the grunt-mxmlc node.js module.

jPlayer 2.7.0 Release notes

  • Released: 1st September 2014
  • [2.6.1] Bug Fix: Added the captureDuration option (Default: true) to capture clicks on the duration element. This can help the operation of the toggleDuration option in some designs.
  • [2.6.2] Bug Fix: The key bindings broke the accessibility of page elements that were not input or textarea. Now any element in focus will prevent the jPlayer key bindings. A fallback remains for old browsers without document.activeElement support, but this may be redundant. This issue was report here jPlayer breaks all links on a page for keyboard users by digitaltoast.
  • [dev] New Feature: The GUI interations will now blur() when the autoBlur option is true (default).
  • [2.6.3] Bug Fix: Fixed a bug in the code for 2.6.2 where a test for null was being made incorrectly.
  • [dev] New Feature: The state of jPlayer is now exposed to the GUI through applying state classes to the cssSelectorAncestor element. The state class names are defined in the stateClass option object, where the following states may have a class name defined: playing, seeking, muted, looped and fullScreen.
  • [dev] New Feature: The useStateClassSkin (default: false) option is set to enable skins that do not have element pairs for the controls. These new skins types use the state classes to change the display through CSS rules.
  • [dev] [jPlayerPlaylist add-on] New Feature: The autoBlur option of the jPlayer instance now affects the Playlist GUI controls.
  • [dev] [jPlayerPlaylist add-on] New Feature: The useStateClassSkin option of the jPlayer instance now affects the Playlist GUI controls through the stateClass option for shuffled class name.
  • [dev] [jPlayerPlaylist add-on] New Feature: The autoBlur option of the jPlayer instance now affects the Playlist track selection.
  • [dev] [jPlayerPlaylist add-on] New Feature: The track selection link had its tabindex changed from tabindex="1" to tabindex="0".
  • [dev] [jPlayerPlaylist add-on] New Feature: The free download link had its tabindex changed from tabindex="1" to tabindex="-1".
  • [2.6.4] Bug Fix: Removed the codecs part from the canPlayType test for MP3. This bug affected Win/OSX Chrome and Android Chrome and Firefox.

jPlayer 2.6.0 Release notes

  • Released: 2nd April 2014
  • [2.5.1] Bug Fix: Links in the .jp-no-solution element were not working. The empty click handler was capturing and preventing the click on the link. Changed the cssSelector code so the GUI elements that do not have a user action, do not longer require an empty function. This removes a number of empty internal functions. This issue was report here Cannot click links in .jp-no-solution by robballou.
  • [2.5.2] Bug Fix: Added to the Flash MP3 solution the loadedmetadata and durationchange events. This is important for the jplayer Popcorn Player Plugin working with MP3 and IE8.
  • [2.5.3] Bug Fix: Corrected the checks for a console.log() feature.
  • [2.5.4] Bug Fix: Check that media formats contain a truethy url value before attempting to convert them to absolute URLs. The jPlayer.inspector project highlighted this problem.
  • [2.5.5] Bug Fix: Applied a fix for Android when changing audio and immediately playing. After setMedia() to an audio media type, any immediate play(), play(time) or pause(time) commands are delayed until the first progress event.
  • [dev] New Feature: The media.title property of the setMedia object is now written to the jp-title class of the instance. It is also written to the HTML Media element's title attribue. This should now display in the iOS Control Center. However, we found and reported a bug in the iOS7.1 system for audio elements and for the time being, this will only work with video elements.
  • [dev] New Feature: The duration display may now show the time remaining using the remainingDuration option. The toggleDuration option may be used to enable clicks on the duration to toggle the remainingDuration option.
  • [dev] New Feature: A new $.jPlayer.event.setmedia event has been added that fires when jPlayer is issued a setMedia comand. (The jPlayer.inspector was updated to include this event.)
  • [dev] Refactor: The currentTime and duration GUI display elements will only be written to if their display value has changed. This may help Chrome, which has issues capturing clicks on the text if it is being changed.
  • [dev] New Feature: The media.duration property of the setMedia object is now used when displaying the jp-duration. When undefined, the values are taken from the media. When a string, the string is used. When a number (in seconds), the displayed values are calculated using this number. Internally, the values on the status are always taken from the media.
  • [2.5.6] Bug Fix: The destroy command now removes the full screen event handlers.

jPlayer 2.5.0 Release notes

  • Released: 7th November 2013
  • [2.4.1] Bug Fix: The Flash SWF had a problem with more than 8 instances on OSX with Firefox and Safari. This was due to the TraceOut() class being instanced. The class is now only instanced in debug mode.
  • [dev] New Feature: Added the consoleAlerts option (default:true) which forces the alerts generated by errorAlerts and warningAlerts to be written to the console instead. When the console is not supported and this option is enabled, no alert will occur. This feature was proposed here Added an option for console logging errors... by adamwaite.
  • [2.4.2] Bug Fix: The Flash SWF had a problem with relative URLs when using the MP4 player (m4a/m4v). Now all media URLs are converted to absolute URLs. The converted URLs are stored in the event.jPlayer.status.media object, even if you supplied relative URLs.
  • [dev] Added Support: Merged Pull Request m3u8 support by rickvanderzwet. Edited to create the audio m3u8a and video m3u8v format definitions. Be aware that, only a few HTML browsers support this format and the Flash does not support it.
  • [dev] Added Support: For the M3U format by creating the audio m3ua and video m3uv format definitions. Be aware that, only a few HTML browsers support this format and the Flash does not support it.
  • [dev] Added Support: Merged Pull Request Add opus codec for ogg, add flac by StefanBruens.
  • [dev] New Feature: Added tellOthers(command[,conditions][,args]) method. This method enables an instance to issue commands to the other instances. The optional conditions(invoker) function executes with the other instance's context (this) and returns true or false, controlling whether the other instance is commanded. The invoker parameter is the jPlayer instance that is issuing the commands. Both this and invoker are the jPlayer JavaScript object. For example: this.status.srcSet or invoker.options.muted.
  • [dev] New Feature: Added time parameter to pauseOthers(time) method. This feature was proposed here Added stopOthers similar to pauseOthers by harvest.
  • [dev] New Feature: Added the globalVolume option (default:false) which causes the volume option to be shared with other jPlayer instances that have the globalVolume option enabled.
  • [dev] New Feature: Enhanced the globalVolume option to causes the muted option to be shared with other jPlayer instances that have the globalVolume option enabled.
  • [dev] Bower Support: Added bower.json file to the jPlayer Repository. This addition was proposed here bower component file by popol1991.
  • [dev] Added Support: Added the allowInsecureDomain("*") command to the Flash. This addition was proposed here Use allowInsecureDomain in order to support serving the SWF over HTTPS by prekageo.
  • [dev] Added Support: The Flash RTMP player now supports an Amazon CloudFront Signature URL. This addition was proposed here Update JplayerRtmp.as by iking0980.
  • [dev] Bug Fix: The volume was not restored after a flashreset event. This fix was given here Recovering from "flash reset" does not restore volume by marcn.
  • [dev] New Feature: Added the playbackRate option for the HTML solution. This option works with these other options: defaultPlaybackRate, minPlaybackRate and maxPlaybackRate. The GUI cssSelectors have been added for a control bar. The status object has the status.playbackRateEnabled flag to indicate support. This feature varies cross-browser, see the dev guide for more information.

jPlayer 2.4.0 Release notes

  • Released: 5th June 2013
  • [2.3.1] Security Fix: The Flash SWF had a minor security vulnerability that enabled XSS (Cross Site Scripting). Reported by Eugene Dokukin. Security reference CVE-2013-2023.
  • [2.3.2] Security Fix: Closed Flash SWF security vulnerability that enabled XSS (Cross Site Scripting). Reported by Eugene Dokukin. Security reference CVE-2013-2023. The jPlayer noConflict option is now restricted to strings that contain the term jQuery.
    For example: lib.jQuery or myjQueryRocks.
  • [2.3.3] Bug Fix: Added the following event emulation to the Flash MP3 player: playing, waiting, canplay and canplaythrough.
  • [2.3.4] Bug Fix: In the Flash MP3 player, cleared the waiting event timer on setMedia. Thus fixing erroneous waiting event generation when setMedia, then play, then setMedia.
  • [2.3.5] Bug Fix: The links in the Flash Context Menu (right click menu) now work. The Flash plugin has a bug with context menus over a video player, so a transparent Sprite was put over it.
  • [2.3.6] Bug Fix: Changing the cssSelectorAncestor after instancing now updates the GUI to the current state. Bug reported by kusch in Issue #83.
  • [2.3.7] Bug Fix: Corrected the GUI bars click handlers so only a single event is processed. Affected the play and volume bars when decreasing the value. ie., The click was captured by both the playBar and the seekBar as the event propagated up the DOM. (Introduced by the 2.2.21 change.)
  • [2.3.8] New Feature: Added support for Zepto 1.0 compiled with optional data module. You will need to manually edit the code to enable Zepto. It requires switching in/out the jQuery and Zepto lines of code at the start. Submitted by nuria.
  • [2.3.9] Bug Fix: Multiple GUI bars are now enabled. The click events are now handled by the bar container, seekBar or volumeBar, and the click refers to itself through the event.currentTarget.
  • [2.3.10] Feature Change: Zepto support is now automatic, except when used as an AMD module. The AMD module continues to require the manual code change for the AMD dependency.
  • [2.3.11] Code Review: Updated versioning to 2.4.0. Final check on jshint.com. Created and tested minified JavaScript.

jPlayer 2.3.0 Release notes

  • Released: 20th April 2013
  • [2.2.1] Merged Pull Request: Review time problems by Tolia. If there is an hours time value, then the hours are automatically added to the minutes when the showHour option is false. Details in Issue #69.
  • [2.2.2] Reviewed Pull Request of [2.2.1] Implemented the same scheme for seconds, where the hours and minutes get added on if they are not being shown. Removed the requirement that the unit is > 0 to be displayed. The show options continue to directly control whether that unit is displayed. The input parameter is now checked that it is truethy and number type, otherwise zero is used.
  • [2.2.3] Merged Pull Request: DRYed up event settings by FarSeeing. The source and minified code is reduced in size as a result of the Don't Repeat Yourself (DRY) change. No functional effect.
  • [2.2.4] (Manually) Merged Pull Request: Fix for IE bug when using tabkey to access the player/document by micha149. Added tabindex="-1" to the object element used by the Flash solution.
  • [2.2.5] Merged Pull Request: Support AMD by ryanramage. Added AMD support so jPlayer is easy to use with jamjs. The jPlayer Package on jamjs.org. Updated version numbers of package details to jPlayer 2.2.5. (Will update for 2.3.0 release.)
  • [2.2.6] Bug Fix: IE9 and iOS6 now work with setMedia followed by play(time). Previously, IE9 would jump to time, but not actually play, and iOS would ignore the play(time) and play() from the start.
  • [2.2.7] Bug Fix: Added document mode sniffer to fix Internet Explorer Flash insertion on IE9. Sniffer based on Microsoft Library code. For example, when the following HTML is used to force IE version emulation: <meta http-equiv="X-UA-Compatible" content="IE=7" />
  • [2.2.8] Bug Fix: IE9 no longer requests the current page url on clearMedia. Solution from GitHub issue clearMedia makes extraneous HTTP request by marcn.
  • [2.2.9] Bug Fix: The Flash Plugin Version Sniffer now checks for Flash 10.1.
  • [2.2.9] Code Review: The Flash Plugin Version Sniffer code is now influenced by SWFObject 2.2. This enables the granular check of the plugin version using _checkForFlash(version) where version is a string with the form "1.2.3", "1.2", "1" or a number 1.2.
  • [2.2.10] New Feature: Added <track> support to setMedia ready for when HTML5 browsers implement the feature. This follows the W3C Media Element Living Standard and the WebVTT Living Standard as of 1st November 2012. A polyfill will be needed to enable this feature in the meantime and for the Flash solution. Could possibly use the WebVTT polyfill in Playr.
  • [2.2.11] Option Review: Added iemobile: /iemobile/ to noVolume and noFullScreen blocklist option objects.
  • [2.2.12] Code Review: Refactored _checkForFlash(version) to use code prior to 2.2.9 with changes to enable major.minor version number. The version is a number 1.2. This satisfies the need to check for Flash 10.1 while saving over 1k bytes when compared to the 2.2.9 change.
  • [2.2.13] Development Bug fix: Removed reserved word usage default, added in 2.2.10, and made jshint.com pass with our options.
  • [2.2.14] Feature Change: Renamed options fullScreen to fullWindow and noFullScreen to noFullWindow.
  • [2.2.14] New Feature: Enabled HTML5 native fullScreen mode. Desktop functionality verified with Firefox 16, Safari 5.1, Chrome 23 and Opera 12.10. Mobile functionality verified with iOS6 (iPad3) Mobile Safari and Android 4.2 (Nexus 7) Chrome.
  • [2.2.15] Bug Fix: Corrected noFullWindow regular expressions for msie, ipad and android_pad. For example, IE10 now allows full window.
  • [2.2.16] (Implemented) Pull Request: Be able to define the time format on each jPlayer instance by LeResKP. Functionality of request enabled while maintaining the original method $.jPlayer.convertTime(s) and the $.jPlayer.timeFormat options.
  • [2.2.17] New Feature: Added keyboard controls that effect the jPlayer instance in focus. The last instance played has focus, or the first instanced with the feature enabled. The option keyEnabled (default: false) is used to turn the feature on. The option keyBindings is an object used to define actions with their key and function. The option audioFullScreen (default: false) allows key controls to display audio poster images in full screen, which is useful for media players. eg., A player that has both video and audio media in a playlist. The method jPlayer("focus") may be used on an instance to gain focus without playing.
  • [2.2.18] (Manually) Merged Pull Request: Fix issues with incorrect RTMP video size by danbrianwhite. The solution was similar to Fix for RTMP videos not sizing properly by davidortinau. Both the original pull requests were 100% file differences. Investigated and found that JplayerRtmp.as had the incorrect line ending format. It had MAC format on a Windows machine, then GitBash assumed Windows format. This has been corrected and the change highlighted to preserve GitHub commit history visibility.
  • [2.2.19] New Feature: The videoWidth and videoHeight information is now maintained on the status. These are the intrinsic width and height values of the video in pixels. The default is zero before it is known or if it is audio media.
  • [jPlayerPlaylist 2.2.0 add-on] Merged Pull Request: Use .on() and .off() instead of .live() and .die() by bistory. The playlist add-on is now using .on() and .off() instead of the deprecated .live() and .die() jQuery methods. The add-on now requires jQuery 1.7+ and enables jQuery 1.9+ which dropped support of the deprecated code.
  • [jPlayerPlaylist 2.2.1 add-on] New Feature: Added default keyBindings options that enable next/previous track through the LEFT and RIGHT arrow keys.
  • [jPlayerPlaylist 2.2.2 add-on] Code Review: Updated jshint.com options to those used by jPlayer and made it pass.
  • [2.2.20] Security Fix: The Flash SWF had a security vulnerability that enabled XSS (Cross Site Scripting). Reported by Malte Batram. Security reference CVE-2013-1942.
  • [2.2.21] Bug Fix: The GUI's cssSelector elements click propagation was being disabled due to using return false;. Corrected to use event.preventDefault();.
  • [2.2.22] New Feature: Added the smoothPlayBar option (Default: true), which enables the animation of the play bar. Changes to its value are now animated over 250ms in a linear manner.
  • [2.2.23] Security Fix: The Flash SWF had a minor security vulnerability that enabled XSS (Cross Site Scripting). Reported by Eugene Dokukin. Security reference CVE-2013-2022.
  • [2.2.24] Development Default Change: The smoothPlayBar option (Default: false), had its default value changed from true to false.
  • [2.2.25] Code Review: Updated versioning to 2.3.0. Final check on jshint.com. Created and tested minified JavaScript.

jPlayer 2.2.0 Release notes

  • Released: 13th September 2012
  • [2.1.1] New Feature: Added RTMP support to the Flash fallback. Enables the supplied options: rtmpv and rtmpa for video and media RTMP streams respectively. RTMP feature developed by Robert M. Hall in this GitHub fork github.com/rmhall/jPlayer of jPlayer.
  • [2.1.2] Security Fix: The Flash SWF had a security vulnerability that could be exploited to steal cookies from the domain hosting the SWF. Reported by Jason Calvert.
  • [2.1.2] New Feature: The Flash SWF jPlayer version number is once again displayed when visiting the URL directly.
  • [2.1.3] Bug Fix: Affecting iOS and Blackberry. iOS 5.1 sometimes fails to give the media.duration and it remains a NaN. Blackberry OS7 gives the initial media.duration as Infinity. jPlayer now leaves the status.duration at zero until the media.duration is finite.
  • [2.1.4] Bug Fix: The RTMP solution locked up when the stop button/command was used, and when the progress bar was used while paused. Both issues were related to pause(time) causing a locked-up state.
  • [2.1.4] Bug Fix: The RTMP solution generated the progress event forever. The timeupdate event now only occurs while playing. ie., It used to happen during the locked-up state.
  • [2.1.5] jQuery: The jQuery.browser sniffer is deprecated in jQuery and will be removed in the future. All browser sniffing now uses code internal to jPlayer. ie., jQuery.jPlayer.browser
  • [2.1.6] Bug Fix: The CSS skins were changed to work with Popcorn. The position:relative; rule was removed from the container as this corrupted popcorn plugin placement over the video. Negative margins have been used instead to align video play button. As a result, the video play button graphic is now the active area for clicks.

jPlayer 2.1.0 Release notes

  • Released: 1st September 2011
  • [2.0.1] Bug Fix: The warning alerts are now controlled by warningAlerts instead of incorrectly by the errorAlerts setting.
  • [2.0.1] Bug Fix: The css selectors are now associated before the Flash is inserted. Previously, any warningAlerts would interfere with the Flash ready event, causing it not to occur.
  • [2.0.1] Bug Fix: The data structure is now complete before any event is generated. Previously, the gate and active properties were undefined. Affected the NO_SOLUTION error event.
  • [2.0.2] Bug Fix: The jPlayer ready event now only ever occurs once. Previously, using setMedia in the jPlayer ready event when the Flash solution was being used, would generate an extra ready event.
  • [2.0.3] Bug Fix: The jQuery UI widget.bridge code contained both the original line (now removed) and the line edited for jPlayer's use.
  • [2.0.3] Feature Change: jPlayer's size is no longer read from the CSS. This was due to jQuery returning the value in pixels rather than the CSS definition, such as "100%".
  • [2.0.3] New Feature: Enabled changing the video size. The full/restore screen sizes are set through the options: size and sizeFull, both being objects containing: width, height and cssClass. The cssSelectorAncestor determines the element that the cssClass is switched onto. The option fullScreen determines which setting is used. Added default values for the HTML css selectors restoreScreen and fullScreen, along with their methods.
  • [2.0.3] Default Value Change: cssSelectorAncestor default value changed to "#jp_container_1" from "#jp_interface_1".
  • [2.0.4] Code Review: Consolidated code to use the _cssSelectorAncestor() function. Added warning event with type CSS_SELECTOR_COUNT if ancestor not found.
  • [2.0.5] Feature Change: The volume and muted options are now maintained on the options object. The duplicate status object properties have been removed. These options can now be changed through the option method. The options object has been added to the jPlayer event object.
  • [2.0.5] New Feature: The mute() and unmute() methods now have an optional parameter. The default is true, and sending a false value performs the opposite effect. Eg., mute(false) is the same as unmute(), which both set muted to false.
  • [2.0.5] Bug Fix: An initial muted value of true now correctly displays the volume bar at zero.
  • [2.0.6] New Feature: Added Flash wmode option (default:"window") to constructor options. Valid wmode values: window, transparent, opaque, direct, gpu
  • [2.0.6] Feature Change: The Flash is now 1px by 1px during initialization, if it is used. The ready event internally minimizes it to zero size. IE6-IE8 are not effected and the size is zero during init.
  • [2.0.6] Code Review: The Flash insertion code is now influenced by SWFObject 2.2, instead of an older version.
  • [2.0.7] Bug Fix: The duration is now correct in iOS Safari when the media changes. The actual bug is in iOS 4.2.1, where the durationchange event occurs while the media.duration is obsolete.
  • [2.0.8] IE9 Review: Enabled the Flash solution in IE9. (Previously the IE9 beta had failed to work with ExternalInterface, so it was disabled completely.) Removed the try/catch around media.load(), which was required for IE9 beta. Removed IE9 specific clause in clearMedia.
  • [2.0.9] New Feature: Added noConflict option (default:"jQuery") for use with jQuery.noConflict(true).
  • [2.0.10] New Feature: Added emulateHtml option (default:false), which creates a bridge that emulates the HTML5 media properties, methods and events on the jPlayer DOM element. This works with both HTML and Flash solutions. Properties are read-only. Known conflict with readyState property on IE9.
  • [2.0.11] Bug Fix: jPlayer("destroy") now works with empty strings (and unfound selectors) in the cssSelector control association object.
  • [2.0.12] Bug Fix: Using jPlayer("play",time) or jPlayer("pause",time) on broken media URLs when using the HTML solution caused the broken URL to be polled. The internal HTML error event handler now cancels any delayed commands.
  • [2.0.13] New Feature: Added flv and fla support to the supplied formats. This makes using these formats more flexible and robust, rather than fooling jPlayer into playing the Flash FLV format through the m4v and m4a formats and setting {solution:"flash"}.
  • [2.0.14] New Feature: Added $.jPlayer.platform object for detecting mobile and tablet devices.
  • [2.0.15] Code Review: Verified JavaScript using JSHint. Minor code syntax changes. Added JSHint options to source. All code will be reviewed in future before commiting to GitHub.
  • [2.0.16] Development Bug Fix: The cssSelector controls restoreScreen and fullScreen now show their correct state.
  • [2.0.17] New Feature: When the Flash solution has its CSS set to display:none and is then shown again, jPlayer will now setup the Flash from the current status state. This is primarily for solving a problem with the Full Screen system on Firefox, where position:fixed causes the Flash to reset. This issue does not affect IE6+ at all. Chrome, Safari and Opera are affected by the display:none issue. Firefox is affected by both.
  • [2.0.17] New Feature: To aid with the display:none issue, new events and error codes have been added. When the Flash generates any additional ready events. the $.jPlayer.event.flashreset event occurs after attempting to setup the Flash with the current status. The error type $.jPlayer.error.FLASH_DISABLED occurs if any command is given to jPlayer while the Flash is hidden or disabled by the browser.
  • [2.0.18] Feature Change: Changed the way the volume controls work. Clicks on the volume bar now unmute if the volume was muted along with changing the volume. Added a new cssSelector control volumeMax (default: ".jp-volume-max") and its method, which unmutes and sets the volume to max. The volumechange event is now generated from the HTML media element's event or emulated through JavaScript for the Flash. The volume fix for Chrome 4 was retested and found to be unneccessary. It has been removed to enable the volumechange event to be used on the HTML element.
  • [2.0.19] New Feature: Implemented autohide for the control interface. Added the option autohide, an object with properties: restored, full, fadeIn, fadeOut and hold. Added the cssSelector entity gui (default: ".jp-gui"). Changed default of the wmode option to "opaque". Changed default of sizeFull:{height:"100%"} Added $.jPlayer.event.resize event for when screen state changes or when size options change.
  • [2.0.20] New Feature: Implemented the repeat control interface. Added the loop option (default: false) to determine initial state off loop. Added the repeat option, which defaults to the repeat event handler for repeating a single piece of media. Added cssSelectors: repeat (default: ".jp-repeat") and repeatOff (default: ".jp-repeat-off"). Added the $.jPlayer.event.repeat event that occurs when the repeat state is changed and immediately before the ready event.
  • [2.0.20] Development Bug Fix: Renamed the cssSelector: interface (".jp-interface") to gui (default: ".jp-gui").
  • [2.0.21] Bug Fix: Corrected the auto ID creation of the jPlayer div ID to work with jQuery 1.6+. The original strict condition check on the jQuery.attr("id") has been changed to a falsy check.
  • [2.0.22] Development Bug Fix: Corrected the GUI display when changing screen mode during a GUI fade out.
  • [2.0.23] Bug Fix: The instance is now correctly removed from the instances static object in the destroy method.
  • [2.0.24] New Feature: Added the nativeVideoControls blocklist option, which is an object containing user agent regular expressions. The native controls are used if matched. Native video controls are disabled when audio media is supplied and noFullScreen is set if nativeVideoControls found a matched.
  • [2.0.24] New Feature: Added the noFullScreen blocklist option, which is an object containing user agent regular expressions. The full screen buttons are hidden if matched.
  • [2.0.24] New Feature: Added the noVolume blocklist option, which is an object containing user agent regular expressions. The volume controls are hidden if matched.
  • [2.0.24] Feature Change: The setMedia method no longer performs a clearMedia command before setting up the new media.
  • [2.0.24] Development Bug Fix: The destroy method removes the size:{cssClass} from the cssSelectorAncestor.
  • [2.0.25] Bug Fix: IE9 on Win Server 2008 has the media.canPlayType property, but did not implement the function. The canPlayType() method is now tested in a try/catch before using it. If the test fails, the HTML solution will not be used.
  • [2.0.26] Bug Fix: Fixed the Flash fallback, where a timeupdate event was generated by all pause commands. Now a pause() only generates a timeupdate event if the media was playing. If paused, a pause(time) only generates a timeupdate event if the time changed. This fix eliminates possible timeupdate handler recusion loops if pause is used in the handler.
  • [2.0.26] Feature Change: Enabled video smoothing in the Flash fallback.
  • [2.0.26] Feature Change: Reduced timeupdate and progress event frequency to 4Hz in the Flash fallback. This now matches the HTML event frequency more closely.
  • [2.0.27] Bug Fix: The destroy method now does a clearMedia. This stops downloads from streams persisting on some browsers.
  • [2.0.28] New Feature: The swfPath option can now be a URL (or a path) to the SWF file with extension .swf. For example, {swfPath:"/scripts/banana.swf"} where you renamed the Jplayer.swf file to "banana.swf".
  • [2.0.29] New Feature: Added the $.jPlayer.event.click event that detects clicks over the poster image, the HTML video and the Flash video. While the event works well, on some browsers the transparent layers of the GUI in full screen mode stop this from working as hoped. As in, the GUI needs to auto-hide and then the clicks can be captured. A different skin could be made to work fine though.
  • [2.0.30] Development Bug Fix: Changing the size and sizeFull options of the audio player using the Flash fallback no longer resizes the zero sized flash as well. Also affected the Flash video solution when the poster was still being displayed.
  • [2.0.30] Development Bug Fix: The audio player with Flash fallback now recovers after the first error event when it is hidden using display:none and then shown, or when display:fixed in Firefox through the full-screen button of a media player.
  • [2.0.31] New Feature: Added the cssSelector entity noSolution (default:".jp-no-solution"), to enable an error message when a NO_SOLUTION error occurs.
  • [2.0.32] AS3 Code Review: Corrected a few minor variable type declarations that were missing and not reported by the compiler. No effect, just better AS3 code.
  • [2.0.32] New Feature: Customized the Flash ContextMenu. Hid the default items and added jPlayer and its Flash version to the menu. The custom menu items have links, but they do not function. Investigation found that the way the Flash is inserted in the page is causing the problem. No solution was found... But it is not important.
  • [2.0.32] AS3 Compiler Change: From now on, the Flex open-source compiler will be used to compile the Flash. Currently using the latest version, Flex 4.5.1.
  • [2.0.33] Bug Fix: Identical consecutive poster image relative URLs were not being shown in OSX Safari. Normally only noticed when audio posters were used, as tracks often share the same poster. The img.src was always converted to absolute, so comparison failed. Solved by comparing with status.media.poster URL.
  • [2.0.33] Development Default Value Change: noFullScreen blocklist defaults changed. Version check of iPad changed to iOS4 and below. Version check removed from: iPhone, iPod and Android phones.
  • [2.0.33] Development Default Value Change: noVolume blocklist defaults changed. Version check removed from: iPad, iPhone, iPod and Android devices.
  • [2.0.34] New Feature: Added the verticalVolume option (default: false) to change the volume display and click calculations from horizontal to vertical.
  • [2.0.35] Development Bug Fix: Fixed GUI animation bug when changing from full-screen to restore-screen. A restore/full screen during the GUI fadeIn period caused the other screen state's GUI to hide, even when its options should not be hiding the GUI in that screen state.
  • [2.0.36] Development Feature Change: Changed $.jPlayer.platform object (Added in [2.0.14]) to enable dot notation on platforms with a space in their name. Whitespace is replaced with underscores. ie., "windows ce" is now "windows_ce".
  • [2.1.0] Bug Fix: When a broken link error occurred in the Flash MP3 player, the progress and timeupdate events were still being generated. The video play button was always being displayed when the error occurred, if present, where it should not be for the mp3 format. The play/pause butttons on the GUI are now correctly reset to the 'paused' state. ie., showing the play button. (NB: The Flash MP4 player did not have this issue.)

jPlayer 2.0.0 Release notes

  • Released: 20th December 2010
  • Initial release of jPlayer 2, the jQuery media player plugin. A complete code rewrite.
  • New feature: Added support for video, making jPlayer capable of playing both media types.
  • New feature: HTML and Flash priority is now defined by solution option. Media format priority is defined by the supplied option
  • New feature: jPlayer now generates events that you can bind handlers to. The ready, error and warning events along with full support for HTML media events generated by the browser. The Flash fallback has a reduced set of events, but covers a good range for an initial release.
  • New feature: Upgraded instancing code to jQuery UI 1.8.7 core widget code.

jPlayer 1.2.0 Release notes

  • Released: 11th July 2010
  • Major Bug: Fixed the operation of jPlayer on the iPad. The solution also fixed the Safari 4/5 (Mac/PC) problems with multiple instances on the same page. Solution uses a single <audio> element per jPlayer, that is re-used and is no longer replaced each time setFile is issued.
  • Major Bug: Corrected the use of playHead and playHeadTime immediately after setFile, where the src of the audio element was never being set. Also had to correct an issue specific to Opera 10.53, where using playHead immediately after setFile was causing NaN values and corrupting the audio element.
  • Minor Bug: Made the play ID's CSS display type set the default display type for both play and pause IDs. The pause ID can now be set to {display:none;} in the CSS. This stops the pause button being displayed briefly when the page loads. If you need different display types for play and pause, then set the cssId for play first, followed by setting pause.
  • Minor Bug: The internally delayed commands created by using playHead, playHeadTime or stop immediately after a setFile when the browser is using HTML5 native audio, are now cleared when issuing a setFile, pause or stop command. Eliminates chained commands from generating unexpected results.
  • Minor Bug: Fixed the volume command for Chrome 4, where it was not working when used between the setFile and play commands. Also fixed when setting the volume multiple times to the same value during the condition.
  • New feature: Changed the security settings of the Flash SWF using System.security.allowDomain('*'). This change allows cross-domain access of the SWF file and enables HTML to remote SWF scripting.
  • New feature: Enabled preloading of the audio file using a new preload constructor option. Default is {preload:'none'}. Options from HTML5 Draft Spec are: none, metadata, auto.
  • New feature: Added a new jPlayer method jPlayer('load') to preload the current audio file.

jPlayer 1.1.1 Release notes

  • Released: 29th April 2010
  • New feature: The click handlers created by jPlayer("cssId",fn,id) now issues a jQuery.blur() to the id that was clicked. This also affects the default cssIds, which use this function internally. This was added so that a link anchor <a> or form elements <input> and <button> would lose focus after being clicked on. ie., otherwise some browsers would highlight it until the user clicked elsewhere on the page.
  • Supporting Skin: The standard skin structure has been revised for accessibility. Added tabindex to the recommended HTML structure and changed controlling elements to <a>. This does not effect jPlayer directly, but since the default skin is widely used, we are mentioning it here in these notes.

jPlayer 1.1.0 Release notes

  • Released: 26th March 2010
  • Fixed major bug: Changed the HTML5 native audio coding so that it works on Opera 10.51. jPlayer now uses the Audio() object, which replaces the old method of inserting an <audio> tag into the page.
  • Fixed major bug: Reviewed the HTMLAudioElement.buffered coding so that it conforms with the current HTML5 Draft Spec. This fixes an issue in Opera 10.51, where the buffered property is being set to a TimeRanges object, but it is not actually being updated by the browser.
  • Fixed minor bug: The initial volume on Chrome 4 was not being set. This had also affected changing the track through jPlayer("setFile",mp3[,ogg]). Both issues are now fixed.
  • Fixed minor bug: When using jPlayer on secure https URLs the Internet Explorer browser was giving a non secured element warning. This issue has been fixed.
  • Fixed minor bug: Corrected the HTML5 behaviour to match the Flash behaviour so that commands affecting playback are ignored before a jPlayer("setFile",mp3[,ogg]) command is issued.
  • Fixed minor bug: The volume is now limited between 0 and 100 percent. Affects the constructor option {volume:percent} and the method jPlayer("volume",percent).
  • Fixed minor bug: The jPlayer("setFile",mp3[,ogg]) command now clears the internal controller on HTML5 browsers.
  • Fixed minor bug: The internally delayed commands created by using playHead, playHeadTime or stop immediately after a setFile when the browser is using HTML5 native audio, are now cleared before delaying a new command. Issuing a play command clears the delayed command.
  • New feature: Added the jPlayer("clearFile") command, which enables clearing the current audio file and disabling the playback commands.
  • New feature: Added JavaScript and Flash SWF file version check. Added internal variables: version, swfVersionRequired and swfVersion. The jPlayer version text has been added to the SWF file, so direct viewing of the SWF shows its version. Check failure will create an alert if {errorAlerts:true}, but no other action is taken.

jPlayer 1.0.0 Release notes

  • Released: 18th February 2010
  • Fixed major Bug: All calls to jPlayer are now passed through a single plugin method called jPlayer(). This breaks backwards compatibility and developers are advised to review the new documentation for the new control mechanism.
  • Fixed major bug: Fixed the problem where some browsers were not always detecting the end of the MP3 file in Flash. Used the Flash Sound.onSoundComplete to raise a flag, which is then captured by the progressBroker(). The values affected by the inaccurate Sound.position property are forced to their correct values. (Affects: playedTime, playedPercentRelative and playedPercentAbsolute.)
  • Fixed major bug: Using playHead, playHeadTime or stop immediately after a setFile when the browser is using HTML5 native audio, now works and does not throw an exception.
  • Fixed major bug: Local server testing on Firefox 3.6 developed a problem when inserting the Flash SWF file into the webpage. This caused the SWF to be loaded twice for an unknown reason. A 100ms delay was added to the initialization of the ExternalInterface.addCallback() declarations and the jPlayerReady signal. This solved the problem with local testing on Firefox 3.6.
  • Fixed minor bug: Event functions default to an empty function. Developer defined functions are checked that they are a function, otherwise an alert box will notify of the problem (when {warningAlerts:true}). Affects the constructor ready() function, onSoundComplete() and onProgressChange().
  • Fixed minor bug: Corrected the HTML5 jPlayer.play event code in IE, setInterval(function, time, argument), since IE only supports setInterval(function, time). (IE does not supports HTML5 at the moment.)
  • Fixed minor bug: When in an HTML5 browser, the setFile command caused the audio file to be pinged before a play command was given. This has been fixed so that the audio file will not be touched until a play command is given.
  • Fixed minor bug: When in an HTML5 browser that supports HTMLMediaElement.buffered.end(), such as Safari 4, stopping or pausing jPlayer while the download was in progress would freeze the load bar. This fix allows the load bar to function correctly, irrespective of whether jPlayer is playing or not.
  • Method renaming: jPlayerId method renamed to cssId to match data structure.
  • Removed Feature: Removed the bufferMsg method and associated code, since this feature was only supported when the Flash component was used.
  • Removed feature: Hover states are no longer managed through the jqjp_hover class. Originally added to correct IE6 :hover not working correctly. All hover states should now be defined using standard :hover CSS.
  • Removed feature: Buffer state is no longer managed through the jqjp_buffer class on the load bar. The original feature would only work when Flash was being used. The feature was removed so that the HTML5 and Flash solutions are identical.
  • New feature: jPlayer now has default CSS Ids built into it. Added customCssId constructor option to control whether the default CSS Ids are used. See documentation for more information. (Default: {customCssId:false}
  • New feature: Added nativeSupport constuctor option to force jPlayer to use the Flash component. (Default: {nativeSupport:true})
  • New feature: Added errorAlerts and warningAlerts constructor options to help debug jPlayer projects. (Default: {errorAlerts:false, warningAlerts:false}
  • New feature: Added graphicsFix constructor option to allow the hidden random number text to be disabled. The random number is used to fix graphical update problems with Safari and Chrome browsers.
  • New feature: All jPlayer configuration information is available via jPlayer("getData", dataName) method. This includes new diagnostic information such as whether jPlayer is playing a track or not. For advanced users, read/write access is provided through $("jpId").data("jPlayer.config"). See documentation for full details.
  • New feature: Changed swfPath logic to accommodate a trailing slash on the path. Eg. {swfPath: "myDir"} is the same as {swfPath: "myDir/"}.
  • New feature: Calls to the Flash are now in a try/catch statement. If the function fails, an alert notifies the developer (when {errorAlerts:true}) that there is a problem with the swfPath and/or Jplayer.swf file location.
  • New feature: The final call of onProgressChange happens after all internal configuration data has been updated. When onSoundComplete occurs, onProgressChange is called once afterwards. The HTML5 and Flash solutions mirror this sequence.
  • Code quality: Refactored code to remove all eval() statements.
  • Code quality: Unbound internal events when a new cssId is given. (Note: cssId was formerly jPlayerId.)
  • Code quality: jQuery selectors are stored internally, so that they are only called once. (Improves performance.)

jPlayer 0.2.5 beta Release notes

  • Released: 25th August 2009
  • Fixed major bug: The HTML canPlayType(MIME) now checks for an empty string and a "no". This corrects a bug that affected new browsers as they adopted changes to the HTML5 Draft Spec. This bug had affected updates to Firefox 3.5 and Safari 4.
  • Fixed bug with the volume constructor option when using HTML5. The new audio file is now initialised with the current volume. The current volume is now stored/maintained in the jPlayer config.
  • Removed all text from the hidden flash class. This was confusing screen readers as they were 'displaying' / 'reading out loud' the hidden flash text. This text was purely for development and testing and has been commented out in the AS2 code.
  • Fixed bug with the audio tag id, config.aid, being used before being defined.
  • Fixed minor bug with the HTML5 initiation call in IE, setTimeout(function, time, argument), since IE only supports setTimeout(function, time). (IE does not supports HTML5 at the moment.)

jPlayer 0.2.4 beta Release notes

  • Released: 1st July 2009
  • Added support for OGG files, where the browser is found to support HTML5 with OGG format. (Currently only Firefox 3.5) The constructor option {oggSupport: true} enables this feature, where an ogg file must then be given as a second attribute to all jPlayer.setFile(mp3, ogg) commands. Priority given as 1) HTML5/OGG, 2) HTML5/MP3, 3) Flash/MP3
  • Fixed bug in Safari 4 with jPlayer.setFile(mp3, [ogg]), where the mp3 file could not be changed from the 1st specified. This bug had affected browsers that supported HTML5 with mp3 format. (Currently only Safari 4)
  • Made the loadbar work with browsers that support HTML5 and have the HTMLMediaElement.buffered DOM object implemented. (Currently only Safari 4)
  • Added jPlayer.jPlayerGetInfo(element) method to enable access to basic diagnostic information.

jPlayer 0.2.3 beta Release notes

  • Released: 22nd June 2009
  • Added HTML5 support for the <audio> element on compliant browsers that can play mp3 format. At release, only the WebKit nightly builds for Mac OS X has implemented HTML5 support for mp3 format.
  • Revised coding of constructor option function ready() along with the methods jPlayer.onSoundComplete(fn) and jPlayer.onProgressChange(fn) to enable the use of $(this) within the user defined functions.
  • Fixed bug with multiple instances, where using: jPlayer.setFile(f) twice, jPlayer.stop(), jPlayer.playHead(p) or jPlayer.playHeadTime(t) on an instance that had never been played using jPlayer.play() would cause all sounds to stop, regardless of the jPlayer instance.
  • Added the constructor option volume to enable setting of the initial volume value.
  • Reviewed the naming of jPlayer's internal methods to improve compatibility with other plugins.

jPlayer 0.2.2 beta Release notes

  • Released: 20th May 2009
  • Renamed jPlayer.change(file) to jPlayer.setFile(file) to avoid jQuery naming conflict with the jQuery.change(fn) event.
  • Appropriate jPlayer methods now return a pointer to $(this), which enables chaining.
  • Removed the jPlayer.changeAndPlay(file) method, as chaining makes this redundent.
  • Added a check for Flash 8 and if not installed, gives a warning and a link to the Flash plugin. Adapted the function checkForFlash from FlashReplace by Robert Nyman.
  • Changed the getMovie() in the plugin to always return the document[fid]. Previously, Internet Explorer would return window[fid] instead. This removes a browser conditional statement, which was found to be redundent since the plugin adds the Flash object to the document definition in IE.
  • Debugged jPlayer.playHead(p) so that it could be used immediately after jPlayer.setFile(file) without needing a jPlayer.play() command prior to it.
  • Added a new method called jPlayer.playHeadTime(t) to make the play head jump to the time defined in seconds.

jPlayer 0.2.1 beta Release notes

  • Released: 4th May 2009
  • Initial beta release version of the jPlayer plugin
  • Released under the MIT licence