Yii 1.x imperavi redactor execCommand('striket

2019-09-16 05:09发布

After Chrome 58 update few features like Bold, Italic & Underline stopped working. On debugging i found that execCommand('strikethrough') is not striking the selected text.

formatMultiple: function(tag)
            {
                this.inline.formatConvert(tag);

                this.selection.save();
                document.execCommand('strikethrough'); //HERE, IT IS NOT STRIKING THE TEXT

                this.$editor.find('strike').each($.proxy(function(i,s)
                {
                    var $el = $(s);

                    this.inline.formatRemoveSameChildren($el, tag);

                    var $span;
                    if (this.inline.type)
                    {
                        $span = $('<span>').attr('data-redactor-tag', tag).attr('data-verified', 'redactor');
                        $span = this.inline.setFormat($span);
                    }
                    else
                    {
                        $span = $('<' + tag + '>').attr('data-redactor-tag', tag).attr('data-verified', 'redactor');
                    }

                    $el.replaceWith($span.html($el.contents()));

                    if (tag == 'span')
                    {
                        var $parent = $span.parent();
                        if ($parent && $parent[0].tagName == 'SPAN' && this.inline.type == 'style')
                        {
                            var arr = this.inline.value.split(';');

                            for (var z = 0; z < arr.length; z++)
                            {
                                if (arr[z] === '') return;
                                var style = arr[z].split(':');
                                $parent.css(style[0], '');

                                if (this.utils.removeEmptyAttr($parent, 'style'))
                                {
                                    $parent.replaceWith($parent.contents());
                                }

                            }

                        }
                    }

                }, this));

                // clear text decoration
                if (tag != 'span')
                {
                    this.$editor.find(this.opts.inlineTags.join(', ')).each($.proxy(function(i,s)
                    {
                        var $el = $(s);
                        var property = $el.css('text-decoration');
                        if (property == 'line-through')
                        {
                            $el.css('text-decoration', '');
                            this.utils.removeEmptyAttr($el, 'style');
                        }
                    }, this));
                }

                if (tag != 'del')
                {
                    var _this = this;
                    this.$editor.find('inline').each(function(i,s)
                    {
                        _this.utils.replaceToTag(s, 'del');
                    });
                }

                this.selection.restore();
                this.code.sync();

            },

I tested creating a fiddle with document.execCommand('strikethrough') and it worked. Even in browser`s console it works. Wondering what could have changed?

1条回答
女痞
2楼-- · 2019-09-16 05:39

Same issue were already reported here: Redactor editor text format issues with Chrome version 58 and work around solution has been provided there. Please have a look.

查看更多
登录 后发表回答