samclarke / SCEditor

A lightweight HTML and BBCode WYSIWYG editor
http://www.sceditor.com/
Other
643 stars 186 forks source link

sceditor.formats.bbcode.remove() -> Uncaught TypeError: bbcodeHandlers[bbcode] is undefined #938

Open MioVisman opened 1 year ago

MioVisman commented 1 year ago

Firefox 108 SCEditor 3.2.0 format: bbcode

        sceditor.create(textarea, options);
        instance = sceditor.instance(textarea);

        var forDelete = ['youtube', 'rtl', 'ltr'];

        if (!linkEnabled) {
            forDelete = forDelete.concat('url', 'img', 'email');
        }

        for (var bbcodeForDelete of forDelete) {
            sceditor.command.remove(bbcodeForDelete);
            sceditor.formats.bbcode.remove(bbcodeForDelete);
        }

If there is "rtl" in the list for deletion, then this error occurs anyway. If there is 'img', then when using emoticons.

The moment the error occurred:

  1. Apparently when sending a message, because the server reports that an empty message has arrived.
  2. And when switching from visual mode to code and back.

i3

samclarke commented 1 year ago

Thanks for reporting!

BBCodes need to be removed before the editor is created (they can somewhat be modified after creation for backwards compatibility but not removed). It shouldn't be throwing an error though so that is a bug.

The current behaviour really isn't great. The proposal for v4 would solve this by requiring commands/BBCodes to be explicitly passed in the constructor so it's obvious where they come from and would prevent these issues.

For now, removing them before creation should work. Something like this: https://jsbin.com/bocemolotu/edit?html,js,output

MioVisman commented 1 year ago

Thank you! I checked, there are no errors at the moment.