View the change log in the github repository for the continued record of jPlayer development.
loadeddata
event
from the progress
event.
TraceOut
class
from the Jplayer.as
code
and the happyworm
package.
autoBlur
option will now either
blur()
or focus()
.
This helps maintain cross-browser behaviour when a user clicks on a GUI button.
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.
Jplayer.swf
to jquery.jplayer.swf
jquery.jplayer.swf
file is now compiled using the
Flex compiler in the grunt-mxmlc
node.js module.
captureDuration
option (Default: true)
to capture clicks on the duration element.
This can help the operation of the toggleDuration
option in some designs.
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.
blur()
when the
autoBlur
option is true
(default).
null
was being made incorrectly.
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
.
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.
autoBlur
option of the jPlayer instance
now affects the Playlist GUI controls.
useStateClassSkin
option of the jPlayer instance
now affects the Playlist GUI controls through the stateClass
option
for shuffled
class name.
autoBlur
option of the jPlayer instance
now affects the Playlist track selection.
tabindex
changed from
tabindex="1"
to tabindex="0"
.
tabindex
changed from
tabindex="1"
to tabindex="-1"
.
.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.
loadedmetadata
and
durationchange
events.
This is important for the jplayer Popcorn Player Plugin working with MP3 and IE8.
console.log()
feature.
url
value before attempting to convert them to absolute URLs.
The jPlayer.inspector project highlighted this problem.
setMedia()
to an audio media type, any immediate
play()
,
play(time)
or
pause(time)
commands are delayed until the first progress
event.
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.
remainingDuration
option.
The toggleDuration
option may be used to enable clicks on the duration
to toggle the remainingDuration
option.
$.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.)
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.
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.
destroy
command now removes the full screen event handlers.
TraceOut()
class being instanced.
The class is now only instanced in debug mode.
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.
event.jPlayer.status.media
object, even if you supplied relative URLs.
m3u8a
and video m3u8v
format definitions.
Be aware that, only a few HTML browsers support this format and the Flash does not support it.
m3ua
and video m3uv
format definitions.
Be aware that, only a few HTML browsers support this format and the Flash does not support it.
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
.
time
parameter to pauseOthers(time)
method.
This feature was proposed here
Added stopOthers similar to pauseOthers
by harvest.
globalVolume
option (default:false) which causes
the volume
option to be shared with other jPlayer instances
that have the globalVolume
option enabled.
globalVolume
option to causes
the muted
option to be shared with other jPlayer instances
that have the globalVolume
option enabled.
bower.json
file to the jPlayer Repository.
This addition was proposed here
bower component file
by popol1991.
allowInsecureDomain("*")
command to the Flash.
This addition was proposed here
Use allowInsecureDomain in order to support serving the SWF over HTTPS
by prekageo.
flashreset
event.
This fix was given here
Recovering from "flash reset" does not restore volume
by marcn.
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.
noConflict
option is now restricted to strings that contain the term jQuery
.
lib.jQuery
or myjQueryRocks
.
playing
,
waiting
,
canplay
and
canplaythrough
.
waiting
event timer on setMedia
.
Thus fixing erroneous waiting
event generation when setMedia
, then play
, then setMedia
.
cssSelectorAncestor
after instancing now updates the GUI to the current state.
Bug reported by kusch in Issue #83.
seekBar
or volumeBar
,
and the click refers to itself through the event.currentTarget
.
tabindex="-1"
to the object element used by the Flash solution.
<meta http-equiv="X-UA-Compatible" content="IE=7" />
clearMedia
.
Solution from GitHub issue clearMedia makes extraneous HTTP request
by marcn.
_checkForFlash(version)
where version
is a string with the form "1.2.3"
,
"1.2"
, "1"
or a number 1.2
.
<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.
iemobile: /iemobile/
to noVolume
and noFullScreen
blocklist option objects.
_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.
default
, added in 2.2.10, and made jshint.com pass with our options.
fullScreen
to fullWindow
and noFullScreen
to noFullWindow
.
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.
noFullWindow
regular expressions
for msie
, ipad
and
android_pad
. For example, IE10 now allows full window.
$.jPlayer.convertTime(s)
and the
$.jPlayer.timeFormat
options.
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.
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.
.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.
keyBindings
options
that enable next/previous track through the LEFT and RIGHT arrow keys.
cssSelector
elements click propagation was being disabled due to using return false;
.
Corrected to use event.preventDefault();
.
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.
smoothPlayBar
option (Default: false),
had its default value changed from true to false.
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.
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.
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.
progress
event forever.
The timeupdate
event now only occurs while playing. ie., It used to happen during the locked-up state.
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
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.
warningAlerts
instead of incorrectly by the errorAlerts
setting.warningAlerts
would interfere with the Flash ready event, causing it not to occur.gate
and active
properties were undefined. Affected the NO_SOLUTION
error event.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.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.
cssSelectorAncestor
default value changed to "#jp_container_1" from "#jp_interface_1".CSS_SELECTOR_COUNT
if ancestor not found.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.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.muted
value of true now correctly displays the volume bar at zero.wmode
option (default:"window") to constructor options. Valid wmode values: window, transparent, opaque, direct, gpunoConflict
option (default:"jQuery") for use with jQuery.noConflict(true)
.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.
jPlayer("destroy")
now works with empty strings (and unfound selectors) in the cssSelector
control association object.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.
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"}
.$.jPlayer.platform
object for detecting mobile and tablet devices.cssSelector
controls restoreScreen
and fullScreen
now show their correct state.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.
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.
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.
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.
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.
cssSelector
: interface (".jp-interface") to gui
(default: ".jp-gui").
jQuery.attr("id")
has been changed to a falsy check.
destroy
method.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.
noFullScreen
blocklist option, which is an object containing user agent regular expressions. The full screen buttons are hidden if matched.noVolume
blocklist option, which is an object containing user agent regular expressions. The volume controls are hidden if matched.setMedia
method no longer performs a clearMedia command before setting up the new media.destroy
method removes the size:{cssClass}
from the cssSelectorAncestor
.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.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.
timeupdate
and progress
event frequency to 4Hz in the Flash fallback. This now matches the HTML event frequency more closely.destroy
method now does a clearMedia
. This stops downloads from streams persisting on some browsers.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".$.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.
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.display:none
and then shown, or when display:fixed
in Firefox through the full-screen button of a media player.cssSelector
entity noSolution
(default:".jp-no-solution"), to enable an error message when a NO_SOLUTION
error occurs.verticalVolume
option (default: false) to change the volume display and click calculations from horizontal to vertical.$.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".
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.)
<audio>
element per jPlayer, that is re-used and is no longer replaced each time setFile
is issued.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.{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.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.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.System.security.allowDomain('*')
. This change allows cross-domain access of the SWF file and enables HTML to remote SWF scripting.preload
constructor option. Default is {preload:'none'}
. Options from HTML5 Draft Spec are: none, metadata, auto.jPlayer('load')
to preload the current audio file.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.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.Audio()
object, which replaces the old method of inserting an <audio>
tag into the page.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.jPlayer("setFile",mp3[,ogg])
. Both issues are now fixed.jPlayer("setFile",mp3[,ogg])
command is issued.{volume:percent}
and the method jPlayer("volume",percent)
.jPlayer("setFile",mp3[,ogg])
command now clears the internal controller on HTML5 browsers.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.jPlayer("clearFile")
command, which enables clearing the current audio file and disabling the playback commands.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()
. This breaks backwards compatibility and developers are advised to review the new documentation for the new control mechanism.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.)playHead
, playHeadTime
or stop
immediately after a setFile
when the browser is using HTML5 native audio, now works and does not throw an exception.ExternalInterface.addCallback()
declarations and the jPlayerReady
signal. This solved the problem with local testing on Firefox 3.6.{warningAlerts:true}
). Affects the constructor ready()
function, onSoundComplete()
and onProgressChange()
.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.)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.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.jPlayerId
method renamed to cssId
to match data structure.bufferMsg
method and associated code, since this feature was only supported when the Flash component was used.customCssId
constructor option to control whether the default CSS Ids are used. See documentation for more information. (Default: {customCssId:false}
nativeSupport
constuctor option to force jPlayer to use the Flash component. (Default: {nativeSupport:true}
)errorAlerts
and warningAlerts
constructor options to help debug jPlayer projects. (Default: {errorAlerts:false, warningAlerts:false}
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.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.swfPath
logic to accommodate a trailing slash on the path. Eg. {swfPath: "myDir"}
is the same as {swfPath: "myDir/"}
.{errorAlerts:true}
) that there is a problem with the swfPath and/or Jplayer.swf file location.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.eval()
statements.cssId
is given. (Note: cssId
was formerly jPlayerId
.)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.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.config.aid
, being used before being defined.setTimeout(function, time, argument)
, since IE only supports setTimeout(function, time)
. (IE does not supports HTML5 at the moment.)jPlayer.setFile(mp3, ogg)
commands. Priority given as 1) HTML5/OGG, 2) HTML5/MP3, 3) Flash/MP3jPlayer.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)HTMLMediaElement.buffered
DOM object implemented. (Currently only Safari 4)jPlayer.jPlayerGetInfo(element)
method to enable access to basic diagnostic information.<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.ready()
along with the methods jPlayer.onSoundComplete(fn)
and jPlayer.onProgressChange(fn)
to enable the use of $(this)
within the user defined functions.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.volume
to enable setting of the initial volume value.jPlayer.change(file)
to jPlayer.setFile(file)
to avoid jQuery naming conflict with the jQuery.change(fn)
event.$(this)
, which enables chaining.jPlayer.changeAndPlay(file)
method, as chaining makes this redundent.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.jPlayer.playHead(p)
so that it could be used immediately after jPlayer.setFile(file)
without needing a jPlayer.play()
command prior to it.jPlayer.playHeadTime(t)
to make the play head jump to the time defined in seconds.