javascript - jquery.min.js :2 Uncaught TypeError: Cannot read property 'replace' of undefined (javascript)(laravel)

标签 javascript jquery laravel laravel-blade

我正在尝试导入拖放编辑器 using this library
但我得到这些错误

    jquery.min.js:2 Uncaught TypeError: Cannot read property 'replace' of undefined
    at initModalSource (examples.js:96)
    at HTMLDocument.<anonymous> (examples.js:3)
    at e (jquery.min.js:2)
    at t (jquery.min.js:2)
    initModalSource @ examples.js:96 
    (anonymous) @ examples.js:3 
    e @ jquery.min.js:2 
    t @ jquery.min.js:2 
    setTimeout (async) 
    S.readyException @ jquery.min.js:2 
    (anonymous) @ jquery.min.js:2 
    e @ jquery.min.js:2 
    t @ jquery.min.js:2 
    setTimeout (async) 
    (anonymous) @ jquery.min.js:2 
    c @ jquery.min.js:2 
    fireWith @ jquery.min.js:2 
    fire @ jquery.min.js:2 
    c @ jquery.min.js:2 
    fireWith @ jquery.min.js:2 
    t @ jquery.min.js:2 
    setTimeout (async) 
    (anonymous) @ jquery.min.js:2 
    c @ jquery.min.js:2 
    fireWith @ jquery.min.js:2 
    fire @ jquery.min.js:2 
    c @ jquery.min.js:2 
    fireWith @ jquery.min.js:2 
    ready @ jquery.min.js:2 
    B @ jquery.min.js:2
这是examples.js的代码
(function ($) {
    $(function () {
        initModalSource();
        initModalContent();
        initToolbar();
    });

    function initToolbar() {
        var toolbar = $('<div class="toolbar"></div>');
        var btnViewSource = $('<button type="button" class="view-source"><i class="fa fa-code"></i> View source</button>');
        var btnViewContent = $('<button type="button" class="view-content"><i class="fa fa-file-text-o"></i> Get content</button>');
        var btnBackToList = $('<a href="./" class="view-content"><i class="fa fa-list"></i> Examples list</a>');

        toolbar.appendTo(document.body);
        toolbar.append(btnViewSource);
        toolbar.append(btnViewContent);
        toolbar.append(btnBackToList);

        btnViewSource.on('click', function () {
            $('#modal-source').modal('show');
        });

        btnViewContent.on('click', function () {
            var modal = $('#modal-content');
            modal.find('.content-html').html(
                beautifyHtml(
                    $('#content-area').keditor('getContent')
                )
            );

            modal.modal('show');
        });
    }

    function initModalContent() {
        var modal = $(
            '<div id="modal-content" class="modal fade" tabindex="-1">' +
            '    <div class="modal-dialog modal-lg">' +
            '        <div class="modal-content">' +
            '            <div class="modal-header">' +
            '                <button type="button" class="close" data-dismiss="modal">&times;</button>' +
            '                <h4 class="modal-title">Content</h4>' +
            '            </div>' +
            '            <div class="modal-body">' +
            '                <pre class="prettyprint lang-html content-html"></pre>' +
            '            </div>' +
            '            <div class="modal-footer">' +
            '                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>' +
            '            </div>' +
            '        </div>' +
            '    </div>' +
            '</div>'
        );

        modal.appendTo(document.body);
    }

    function initModalSource() {
        var modal = $(
            '<div id="modal-source" class="modal fade" tabindex="-1">' +
            '    <div class="modal-dialog modal-lg">' +
            '        <div class="modal-content">' +
            '            <div class="modal-header">' +
            '                <button type="button" class="close" data-dismiss="modal">&times;</button>' +
            '                <h4 class="modal-title">Source</h4>' +
            '            </div>' +
            '            <div class="modal-body">' +
            '                <ul class="nav nav-tabs">' +
            '                    <li class="active"><a href="#source-html" data-toggle="tab"><i class="fa fa-html5"></i> HTML</a></li>' +
            '                    <li ><a href="#source-js" data-toggle="tab"><i class="fa fa-code"></i> JavaScript</a></li>' +
            '                </ul>' +
            '                <div class="tab-content">' +
            '                    <div class="tab-pane active" id="source-html">' +
            '                        <pre class="prettyprint lang-html source-html"></pre>' +
            '                    </div>' +
            '                    <div class="tab-pane" id="source-js">' +
            '                        <pre class="prettyprint lang-js source-js"></pre>' +
            '                    </div>' +
            '                </div>' +
            '            </div>' +
            '            <div class="modal-footer">' +
            '                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>' +
            '            </div>' +
            '        </div>' +
            '    </div>' +
            '</div>'
        );

        var htmlCode = $('[data-keditor="html"]').html();
        var htmlInclude = $('<div />').html($('[data-keditor="html-include"]').clone()).html();
        htmlInclude = htmlInclude.replace('data-keditor="html-include"', '');
        htmlInclude = htmlInclude.replace(/\</g, '&lt;').replace(/\>/g, '&gt;');
        modal.find('.source-html').html(beautifyHtml(htmlCode + htmlInclude));

        var jsCode = $('[data-keditor="script"]').html();
        jsCode =  jsCode.replace(/\</g, '&lt;').replace(/\>/g, '&gt;');
        modal.find('.source-js').html(beautifyJs(jsCode));

        modal.appendTo(document.body);
    }

    function beautifyHtml(htmlCode) {
        htmlCode = html_beautify(htmlCode, {
            'indent_size': '4',
            'indent_char': ' ',
            'space_after_anon_function': true,
            'end_with_newline': true
        });
        htmlCode = htmlCode.replace(/</g, '&lt;').replace(/>/g, '&gt;');

        return PR.prettyPrintOne(htmlCode, 'lang-html');
    }

    function beautifyJs(jsCode) {
        jsCode = js_beautify(jsCode, {
            'indent_size': '4',
            'indent_char': ' ',
            'space_after_anon_function': true,
            'end_with_newline': true
        });

        return PR.prettyPrintOne(jsCode, 'lang-js');
    }

})(jQuery);
在我看来,我只有这个
    <div id="content-area"></div>

    <script>
        $(function () {
            $('#content-area').keditor();
        });
    </script>
我在用着
CSS:
  • Font Awesome
  • 编辑
  • keditor 组件
  • 美化
  • keditor 示例

  • javascript:
  • jquery min 3.5.1
  • jQuery UI 1.12.1
  • ckeditor
  • formBuilder 2.5.3 分钟
  • 从渲染 2.5.3 分钟
  • keditor
  • keditor 组件
  • 美化
  • 美化
  • beauutify-html
  • 示例

  • 这是最终结果
    enter image description here
    问题是缺少按钮“+”
    enter image description here
    This is a functional example
    我该如何解决这个问题?谢谢 :)

    最佳答案

    您忘记添加 data-keditor="script"在您的 script 上使您的代码失败的元素。您还需要添加data-type="keditor-style"link rel="stylesheet"元素。
    这是您在正确元素上具有正确属性的代码。
    由于某种原因,它在这里不起作用,但您可以在 JSFiddle 中尝试。

    (function ($) {
    
        // Mocked functions because not provided in the question
        const noop = str => str;
        const html_beautify = noop;
        const js_beautify = noop;
        const PR = {
            prettyPrintOne: noop
        }
    
        $(function () {
            initModalSource();
            initModalContent();
            initToolbar();
        });
    
        function initToolbar() {
            var toolbar = $('<div class="toolbar"></div>');
            var btnViewSource = $('<button type="button" class="view-source"><i class="fa fa-code"></i> View source</button>');
            var btnViewContent = $('<button type="button" class="view-content"><i class="fa fa-file-text-o"></i> Get content</button>');
            var btnBackToList = $('<a href="./" class="view-content"><i class="fa fa-list"></i> Examples list</a>');
    
            toolbar.appendTo(document.body);
            toolbar.append(btnViewSource);
            toolbar.append(btnViewContent);
            toolbar.append(btnBackToList);
    
            btnViewSource.on('click', function () {
                $('#modal-source').modal('show');
            });
    
            btnViewContent.on('click', function () {
                var modal = $('#modal-content');
                modal.find('.content-html').html(
                    beautifyHtml(
                        $('#content-area').keditor('getContent')
                    )
                );
    
                modal.modal('show');
            });
        }
    
        function initModalContent() {
            var modal = $(
                '<div id="modal-content" class="modal fade" tabindex="-1">' +
                '    <div class="modal-dialog modal-lg">' +
                '        <div class="modal-content">' +
                '            <div class="modal-header">' +
                '                <button type="button" class="close" data-dismiss="modal">&times;</button>' +
                '                <h4 class="modal-title">Content</h4>' +
                '            </div>' +
                '            <div class="modal-body">' +
                '                <pre class="prettyprint lang-html content-html"></pre>' +
                '            </div>' +
                '            <div class="modal-footer">' +
                '                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>' +
                '            </div>' +
                '        </div>' +
                '    </div>' +
                '</div>'
            );
    
            modal.appendTo(document.body);
        }
    
        function initModalSource() {
            var modal = $(
                '<div id="modal-source" class="modal fade" tabindex="-1">' +
                '    <div class="modal-dialog modal-lg">' +
                '        <div class="modal-content">' +
                '            <div class="modal-header">' +
                '                <button type="button" class="close" data-dismiss="modal">&times;</button>' +
                '                <h4 class="modal-title">Source</h4>' +
                '            </div>' +
                '            <div class="modal-body">' +
                '                <ul class="nav nav-tabs">' +
                '                    <li class="active"><a href="#source-html" data-toggle="tab"><i class="fa fa-html5"></i> HTML</a></li>' +
                '                    <li ><a href="#source-js" data-toggle="tab"><i class="fa fa-code"></i> JavaScript</a></li>' +
                '                </ul>' +
                '                <div class="tab-content">' +
                '                    <div class="tab-pane active" id="source-html">' +
                '                        <pre class="prettyprint lang-html source-html"></pre>' +
                '                    </div>' +
                '                    <div class="tab-pane" id="source-js">' +
                '                        <pre class="prettyprint lang-js source-js"></pre>' +
                '                    </div>' +
                '                </div>' +
                '            </div>' +
                '            <div class="modal-footer">' +
                '                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>' +
                '            </div>' +
                '        </div>' +
                '    </div>' +
                '</div>'
            );
    
            var htmlCode = $('[data-keditor="html"]').html();
            var htmlInclude = $('<div />').html($('[data-keditor="html-include"]').clone()).html();
            htmlInclude = htmlInclude.replace('data-keditor="html-include"', '');
            htmlInclude = htmlInclude.replace(/\</g, '&lt;').replace(/\>/g, '&gt;');
            modal.find('.source-html').html(beautifyHtml(htmlCode + htmlInclude));
    
            var jsCode = $('[data-keditor="script"]').html();
            jsCode =  jsCode.replace(/\</g, '&lt;').replace(/\>/g, '&gt;');
            modal.find('.source-js').html(beautifyJs(jsCode));
    
            modal.appendTo(document.body);
        }
    
        function beautifyHtml(htmlCode) {
            htmlCode = html_beautify(htmlCode, {
                'indent_size': '4',
                'indent_char': ' ',
                'space_after_anon_function': true,
                'end_with_newline': true
            });
            htmlCode = htmlCode.replace(/</g, '&lt;').replace(/>/g, '&gt;');
    
            return PR.prettyPrintOne(htmlCode, 'lang-html');
        }
    
        function beautifyJs(jsCode) {
            jsCode = js_beautify(jsCode, {
                'indent_size': '4',
                'indent_char': ' ',
                'space_after_anon_function': true,
                'end_with_newline': true
            });
    
            return PR.prettyPrintOne(jsCode, 'lang-js');
        }
        
    
    
    })(jQuery);
    <link href="https://cdn.jsdelivr.net/npm/@kademi/keditor@2.0.1/dist/css/keditor.css" rel="stylesheet" data-type="keditor-style"/>
    <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" data-type="keditor-style">
    <div id="content-area"></div>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@kademi/keditor@2.0.1/dist/js/keditor.js"></script>
    <script type="text/javascript" data-keditor="script">
        $(function () {
            $('#content-area').keditor();
        });
    </script>

    关于javascript - jquery.min.js :2 Uncaught TypeError: Cannot read property 'replace' of undefined (javascript)(laravel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65150910/

    相关文章:

    javascript - regExp 接受任何格式的所有特殊字符至少一个数字一个大写一个字母

    php - 为什么 Slick slider 不能在表单标签内工作?

    php - 如何在 Laravel 4 中创建 Hstore 列类型?

    php - iOS 应用程序与 Laravel webapp 通信

    javascript - jQuery Mobile 多个页面在调用面板时导致问题

    javascript - 推送到 JavaScript 对象中的数组

    java - Cookie读写问题-jQuery转JSP

    javascript - 在 jQuery Mobile 中使用 $.each 和 wrapInner() 时遇到问题

    Laravel 没有验证唯一值(数据库)

    javascript - 在页面顶部显示颜色框