Skip to content

Commit a7c9f26

Browse files
mister-bengkatsev
andauthored
fix: Refactor evented to make mincompatable with Chrome 53 (#8810)
## Description Chrome 53 doesn't like the minified output. Specifically, it throws `Uncaught SyntaxError: Unexpected token (` on the ternary in the minified version of `normalizeListenArgs()` https://github.com/videojs/video.js/blob/e78bcc7b2d829fce01451cf105b918d8feec4548/src/js/mixins/evented.js#L165-L195 Line breaks added for clarify ```js Tt = (e, t, s) => { var i = t.length < 3 || t[0] === e || t[0] === e.eventBusEl_; let r, n, a; return i ? (r = e.eventBusEl_, 3 <= t.length && t.shift(), [n, a] = t) : [r, n, a] = t, ft(r, e, s), yt(n, e, s), bt(a, e, s), a = _(e, a), { isTargetingSelf: I, target: r, type: n, listener: a } }, ``` Chrome would be happy with this if `[r, n, a] = t` were `([r, n, a] = t)`. ## Specific Changes proposed Refactor `normalizeListenArgs()` slightly to use multiple statements to coerce uglify-js to include parentheses. Also updates uglify-js, but that in itself isn't the fix. Fixes #8783 ## Requirements Checklist - [x] Feature implemented / Bug fixed - [ ] If necessary, more likely in a feature request than a bug fix - [x] Change has been verified in an actual browser - Browserstack Chrome 53 - [ ] Unit Tests updated or fixed - [ ] Docs/guides updated - [ ] Example created ([starter template on JSBin](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0)) - [x] Has no DOM changes which impact accessiblilty or trigger warnings (e.g. Chrome issues tab) - [x] Has no changes to JSDoc which cause `npm run docs:api` to error - [ ] Reviewed by Two Core Contributors --------- Co-authored-by: Gary Katsevman <git@gkatsev.com>
1 parent 798647b commit a7c9f26

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@
161161
"shx": "^0.3.2",
162162
"sinon": "^11.1.1",
163163
"typescript": "^5.5.2",
164-
"uglify-js": "^3.6.0",
164+
"uglify-js": "^3.19.0",
165165
"unified": "^7.0.2",
166166
"videojs-generate-karma-config": "^8.1.0",
167167
"videojs-languages": "^2.0.0",

src/js/mixins/evented.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,12 @@ const normalizeListenArgs = (self, args, fnName) => {
182182

183183
[type, listener] = args;
184184
} else {
185-
[target, type, listener] = args;
185+
// This was `[target, type, listener] = args;` but this block needs more than
186+
// one statement to produce minified output compatible with Chrome 53.
187+
// See https://github.com/videojs/video.js/pull/8810
188+
target = args[0];
189+
type = args[1];
190+
listener = args[2];
186191
}
187192

188193
validateTarget(target, self, fnName);

0 commit comments

Comments
 (0)