根据所选文本更改按钮值(不适用于Firefox)

时间:2016-07-07 14:44:00

标签: jquery firefox

我正在构建一个WYSIWYG编辑器,我希望根据contenteditable div中的选定文本更改按钮值。我已经提出了以下jquery代码,它在Chrome和Microsoft Edge中运行良好,但在Firefox中无效。

function isHeadingButtonActive(e) {

        $('#btnShowHeadingControls').removeClass('activeButton');

        var e = event || window.event;
        var node = e.target;
        var buttontext = 'Paragraph';

        while(node.nodeName != 'DIV') {

            if (node.nodeName == 'H1') { 
                buttontext = 'Heading 1';
            } else
            if (node.nodeName == 'H2') { 
                buttontext = 'Heading 2';
            } else
            if (node.nodeName == 'H3') { 
                buttontext = 'Heading 3';
            } else
            if (node.nodeName == 'H4') { 
                buttontext = 'Heading 4';
            } else
            if (node.nodeName == 'H5') { 
                buttontext = 'Heading 5';
            } else
            if (node.nodeName == 'H6') { 
                buttontext = 'Heading 6';
            } 

            $('#btnShowHeadingControls').addClass('activeButton');
            $('#btnShowHeadingControls').val(buttontext);
            node = node.parentNode;
        }
    } 

如何在Firefox中使用?

使用Firebug进行调试时,收到此错误消息:

ReferenceError: event is not defined

2 个答案:

答案 0 :(得分:0)

你可以在这里使用jquery prop()

$('#elem').prop("nodeName")

example fiddle

答案 1 :(得分:0)

我终于设法解决了这个问题。

问题是之前我在调用函数时没有将参数e传递给函数:

isHeadingButtonActive();

为了解决这个问题,我只是将参数e添加到函数中:

isHeadingButtonActive(e);