javascript - IE 11 在 <h1> 元素的选项卡中间意外抛出 js 中断错误 1010

标签 javascript html internet-explorer

我正在编写一个工作项目,当页面加载时,它将通过ajax查询抓取一个页面,单击按钮它将抓取另一个页面。我已经检查了 ajax 的语法,似乎可以正常工作,在 Chrome 和 FireFox 中测试了相同的代码。

来自 ie 开发工具的错误如下:

SCRIPT1010: Expected identifier
File: admin, Line: 40, Column: 15

我只是不明白为什么它在没有代码的地方给我一个错误:

</head>
<body class="default-bg">
    <div class="container">
        <div class="container-fluid">
            <div id="header">
                <div class="jumbotron card-primary">
           <!--ie errors here-->         <h2 class="text-center">Administration Panel</h2>
                </div>
            </div>
        </div>
    </div>
...

<script>
    $(document).ready(function(){
        $.ajaxSetup({ cache: false });
        $("button#content-approval-button").addClass('active-btn');
        getPage('cap');
    });
    function getPage(pageToGet){
        $.ajax({
            url:"../includes/scripts/php/actions/pages.php",
            type:"POST",
            cache:false,
            data:"&page=" + pageToGet,
            success:function(r){
                $('#page-content').html(r);
            },
            error:function(r){
                alert("failed");
            }
        });
    }
</script>

问题是,当页面加载并且您尝试单击内置 JS 的内容并且 IE 开发工具很糟糕时,它会引发更大、更讨厌的配合。 这是页面中的脚本标记我尝试加载功能失败,我觉得这是由于 1010 错误

<script>
var output="";
var md=window.markdownit({
    html:true,
    typographer:true,
    xhtmlout:true,
    breaks:true,
    linkify:true
});
md.use(window.markdownitEmoji);
md.use(window.markdownItAttrs);
md.use(window.markdownitAbbr);
md.use(window.markdownitDeflist);
md.use(window.markdownitIns);
md.use(window.markdownitMark);
md.use(window.markdownitSub);
md.use(window.markdownitSup);
md.use(window.markdownitMultilineTbl);
md.renderer.rules.table_open = function(tokens, idx) {
    return '<table class="table table-striped">';
};

function parseMarkDown(){
    var input = $("#input").val();
    var semiSanitized = input.replace(/javascript:/igm," javascript code is disabled ");
    //the code sanitation will finish on the sever side with removal of script tags.
    //client side it "sanitizes the page as well as input... thus making the page break.
    output = md.render(semiSanitized);    
    $('#output').html(output);
}

function updateTitle(){
    var i = $('#title').val();
    var semiSanitized = i.replace(/javascript:/igm," javascript code is disabled ");
    $('#c-title').text(i);
}

function insertByButton(startEle,endEle){
    var inV = document.getElementById('input');
    const {value, selectionStart, selectionEnd} = inV;
    const beforeSelection = value.substring(0, selectionStart);
    const selection = value.substring(selectionStart, selectionEnd);
    const afterSelection = value.substring(selectionEnd);
    inV.value = beforeSelection + startEle + selection.trim() + endEle + afterSelection;
    parseMarkDown();
    inV.focus();
    if (selectionEnd == selectionStart){
        var i = beforeSelection + startEle;
        inV.setSelectionRange(i.length,i.length);
    }else{
        inV.setSelectionRange(selectionEnd,selectionEnd);
    }
}

function buildPageTemplate(){
    var inV = document.getElementById('input');
    var h = "some proprietary text\n";
    h += "# "+$("#title").val()+'{class="jumbotron card-primary card-shadow card-bottom-spacer-md text-center" id="doc-title" title="'+$('#title').val()+'"}\n';
    inV.value = "";
    inV.value = h;
    parseMarkDown();
}

下面是一些应该将文本插入文本区域的按钮...

        <div class="row">
            <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                <div class="btn-toolbar card-left-spacer-sm card-bottom-spacer-sm">
                    <button id="ins-template" class="btn btn-default" title="Insert page template" onclick="buildPageTemplate();"><img src="../includes/images/png/glyphicons-703-file-plus.png" alt="insert page template code"></button>
                    <button id="ins-heading" class="btn btn-default" title="Insert # for h1-h6" onclick="insertByButton('#','');"><img src="../includes/images/png/glyphicons-106-text-height.png" alt="insert # for h1-6"></button>
                    <button id="ins-css-styler" class="btn btn-default" title="Insert an attribute tag" onclick="insertByButton('','{class=&quot;&quot; id=&quot;&quot; title=&quot;&quot;}');"><img src="../includes/images/png/glyphicons-67-tags.png" alt="insert attribute tag snippet"></button>
                    <button id="ins-code-block" class="btn btn-default" title="Insert a code block" onclick="insertByButton('\n``` \n','\n```\n');"><img src="../includes/images/png/glyphicons-119-embed-close.png" alt="insert code block"></button>
                    <button id="ins-quote" class="btn btn-default" title="Insert block quote" onclick="insertByButton('\n> ','\n>_-- [attributation]_{.pull-right}');"><img src="../includes/images/png/glyphicons-547-quote.png" alt="insert block or regular quote"></button>
                    <button id="ins-ulist" class="btn btn-default" title="Insert an unordered list" onclick="insertByButton('\n- ','');"><img src="../includes/images/png/glyphicons-115-list.png" alt="insert an unordered list with bullet points"></button>
                    <button id="ins-olist" class="btn btn-default" title="Insert an ordered list" onclick="insertByButton('\n1. ','');"><img src="../includes/images/png/glyphicons-710-list-numbered.png" alt="insert ordered list with numerical values"></button>
                    <button id="ins-code-inline" class="btn btn-default" title="Insert inline code snippet" onclick="insertByButton('`','`');"><img src="../includes/images/png/glyphicons-118-embed.png" alt="insert code inline with text"></button>
                    <button id="ins-bold" class="btn btn-default" title="Insert bold text" onclick="insertByButton('**','**');"><img src="../includes/images/png/glyphicons-103-bold.png" alt="insert bolded text"></button>
                    <button id="ins-underline" class="btn btn-default" title="Insert underlined text" onclick="insertByButton('++','++');"><img src="../includes/images/png/glyphicons-104-text-underline.png" alt="insert underlined text"></button>
                    <button id="ins-italic" class="btn btn-default" title="Insert italicized text" onclick="insertByButton('_','_');"><img src="../includes/images/png/glyphicons-102-italic.png" alt="insert italicized text"></button>
                    <button id="ins-strike" class="btn btn-default" title="Insert strike though text" onclick="insertByButton('~~','~~');"><img src="../includes/images/png/glyphicons-105-text-strike.png" alt="insert strike through text"></button>
                    <button id="ins-highlight" class="btn btn-default" title="Insert highlighted text" onclick="insertByButton('==','=={.highlight-yellow}');"><img src="../includes/images/png/glyphicons-236-pen.png" alt="insert highlighted text"></button>
                    <button id="ins-sub" class="btn btn-default" title="Insert subscript text" onclick="insertByButton('~','~');"><img src="../includes/images/png/glyphicons-604-subscript.png" alt="insert subscript text"></button>
                    <button id="ins-super" class="btn btn-default" title="Insert superscript text" onclick="insertByButton('^','^');"><img src="../includes/images/png/glyphicons-603-superscript.png" alt="insert superscript text"></button>
                </div>
            </div>
        </div>

正如之前提到的,所有这些代码在其他浏览器中都运行良好,但由于该公司主要使用 IE11,我被迫为其开发......对可能出现问题的任何建议?

最佳答案

您的问题在这里:

const {value, selectionStart, selectionEnd} = inV;

您不能将值破坏为变量列表。任何版本的 IE 都不支持它。 请参阅此处了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

关于javascript - IE 11 在 <h1> 元素的选项卡中间意外抛出 js 中断错误 1010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49990250/

相关文章:

javascript - 自动制表,IE 失败

internet-explorer - 使用 VBA Excel 通过更改下拉值来导航网站

java - Javaee 中的 SSL/TLS 协议(protocol)版本

javascript - 更改移动设备上的背景图像

html - 由 css 网格提供支持的 "complex"矩阵样式网格是否可能?

html - 带有 <hr> 行的 QML 文本

html - 如何使用设置的高度和宽度值在 div 中将完整图像显示为背景

javascript - innerHtml = 不显示 firebase 数据

javascript - Django 休息 : AJAX Post is not working, 400 响应

javascript - 如何创建仅在同时按下两个 'shift + left/right arrow' 键后触发的事件监听器?