js: fix Javascript failures in Seamonkey/Palemoon.
Fix site Javascript failing to load in Seamonkey, Palemoon, and other
older browsers.
The @alpinejs/morph library uses public instance fields, which is ES2022
syntax not supported in older browsers. This is the code:
var DomManager = class {
el = void 0; // `el` is a public instance field
}
// => SyntaxError: bad method definition
The fix here is to separate the Alpine code into a separate bundle so
that a failure to load it doesn't cause the rest of the site's
Javascript to fail to load.
A better fix would be to either transpile the @alpinejs/morph library to
ES5 (which seems difficult to do in webpacker), or to fix the library
upstream to not use this syntax.
* https://inspiredwebdev.com/everything-new-in-es2022/
* https://blog.saeloun.com/2021/10/21/ecmacscript-public-instance-fields-and-private-instance-fields.html
* https://caniuse.com/?search=public%20class%20fields
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields#public_instance_fields
This commit is contained in:
@@ -10,8 +10,6 @@ require('@rails/ujs').start();
|
||||
require('hammerjs');
|
||||
require('jquery-hotkeys');
|
||||
import morphdom from 'morphdom';
|
||||
import Alpine from 'alpinejs';
|
||||
import morph from '@alpinejs/morph';
|
||||
|
||||
// should start looking for nodejs replacements
|
||||
importAll(require.context('../vendor', true, /\.js$/));
|
||||
@@ -95,8 +93,4 @@ Danbooru.error = Utility.error;
|
||||
window.$ = jQuery;
|
||||
window.jQuery = jQuery;
|
||||
window.morphdom = morphdom;
|
||||
window.Alpine = Alpine;
|
||||
window.Danbooru = Danbooru;
|
||||
|
||||
Alpine.plugin(morph);
|
||||
Alpine.start();
|
||||
|
||||
Reference in New Issue
Block a user