-
Notifications
You must be signed in to change notification settings - Fork 7.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow setting a custom incompatible video message. fixes #636 #638
Conversation
Following up on this- any comments on this pull request? |
Sorry, currently down a rabbit hole with control bar fixes/updates. Instead of the if/else, you could set the default as a global option that can be over ridden. 'incompatibleVideoMessage': (the default message) And then set innerHTML with that option innerHTML: this.options()['incompatibleVideoMessage']; At some point we need to set up video.js to allow for internationalization, so this option may change long term, but definitely a good start. Thanks! |
Ah, didn't see global options config in core.js. Changed to set the default there and use directly. |
var player = new vjs.Player(tag); | ||
|
||
var incompatibilityMessage = player.el().getElementsByTagName('p')[0]; | ||
equal(incompatibilityMessage.textContent, 'Video no go'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
node.textContent is only IE9+
https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent
innerHTML?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think textContent is the way to go. Having an innerHTML fallback is alright.
What's the likely hood that someone will run these tests in IE8 or below?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Guaranteed, unfortunately. Before a release I run all the tests in the top browsers/devices, which still includes IE8.
Is there any case where innerHTML wouldn't work for this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, this is just for reading. Hm... It probably is alright to use innerHTML, though, I'd rather avoid it. It may be different depending on the exactly content of the incompatibilityMessage. Depending on the HTML structure, innerHTML and textContent will give you different results but probably not a problem in this particular case.
I would still rather have it fallback to innerHTML if textContent isn't available in the spirit of moving forward.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could that be as simple as incompatibilityMessage.textContent || incompatibilityMessage.innerHTML
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assuming IE8 doesn't yell about textContent not being available, yes.
Might need to do something like typeof incompatibilityMessage.textContent !== undefined ? incompatibilityMessage.textContent : incompatibilityMessage.innerHTML
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, hang on, we're setting the value with innerHTML, so we should probably be reading it with innerHTML.
https://github.com/videojs/video.js/pull/638/files#L1L743
Otherwise we'll get different results if there's any child nodes.
For other node types, textContent returns the concatenation of the textContent attribute value of every child node, excluding comments and processing instruction nodes.
The fallback message isn't meant to be limited to just text, in fact the actual default message has links.
Nice, and great test. Made one comment inline. |
Got this in, thanks. Made a few changes:
|
Thanks for picking this up, greatly appreciated. |
Rough-draft pull request, tried to match the codebase as much as I could. Let me know what you think (particularly about using the global videojs options to set this message).