【问题标题】:Issue trying to escape a string in javascript plugin尝试在 javascript 插件中转义字符串的问题
【发布时间】:2015-07-13 17:24:15
【问题描述】:

我正在尝试为CKEditor 使用 Bootstrap Tab 插件,它运行良好。但是,当我在内容上使用单引号时(不管字符串是“'”、“还是'),它就中断了。

我想这只是一个逃避问题。我尝试使用escape()encodeURI(),但失败了。

错误:SyntaxError: missing ) 在参数列表之后;
资源: x)PRE3015 Pino 1/2'' 15mm Ponta Balistica Aço 3,1 15

标签的插件代码是:

data: function() {
                var bootstrapTab_d = new Date();
                var bootstrapTab_id = bootstrapTab_d.getTime();
                var bootstrapTab_item = bootstrapTab_contents = '';
                for (var bootstrapTab_i = 0; bootstrapTab_i <= this.data.bootstrapTab_total; bootstrapTab_i++) {
                    eval("bootstrapTab_title = this.data.bootstrapTab_item" + bootstrapTab_i);
                    bootstrapTab_title = bootstrapTab_title != undefined ? bootstrapTab_title : '';
                    eval("bootstrapTab_content = this.data.bootstrapTab_content" + bootstrapTab_i);
                    bootstrapTab_content = bootstrapTab_content != undefined ? bootstrapTab_content : '';
                    eval("bootstrapTab_itemClass = this.data.bootstrapTab_itemClass" + bootstrapTab_i);
                    bootstrapTab_itemClass = bootstrapTab_itemClass != undefined ? bootstrapTab_itemClass : '';
                    eval("bootstrapTab_contentClass = this.data.bootstrapTab_contentClass" + bootstrapTab_i);
                    bootstrapTab_contentClass = bootstrapTab_contentClass != undefined ? bootstrapTab_contentClass : '';
                    if (bootstrapTab_title) {
                        bootstrapTab_item += '<li role="presentation" class="' + bootstrapTab_itemClass + '"><a href="#tab' + bootstrapTab_id + '_' + (bootstrapTab_i + 1) + '" aria-controls="tab' + bootstrapTab_id + '_' + (bootstrapTab_i + 1) + '" role="tab" data-toggle="tab">' + bootstrapTab_title + '</a></li>';
                        bootstrapTab_contents += '<div role="tabpanel" class="' + bootstrapTab_contentClass + '" id="tab' + bootstrapTab_id + '_' + (bootstrapTab_i + 1) + '">' + bootstrapTab_content + '</div>'
                    }
                }
                this.element.setAttribute('id', 'collapse' + bootstrapTab_id);
                this.element.$.innerHTML = '<div role="tabpanel"><ul class="nav nav-tabs" role="tablist">' + bootstrapTab_item + '</ul><div class="tab-content">' + bootstrapTab_contents + '</div></div>'
			}

【问题讨论】:

  • 我很确定如果你在外面使用双引号,你可以在里面使用单引号而不必转义它们。无论哪种方式,您都可以使用反斜杠手动转义。

标签: javascript jquery twitter-bootstrap tabs


【解决方案1】:

我会重构代码,而不是使用 eval!

eval 是邪恶的http://blogs.msdn.com/b/ericlippert/archive/2003/11/01/53329.aspx

而不是

eval("bootstrapTab_title = this.data.bootstrapTab_item" + bootstrapTab_i);

使用bootstrapTab_item 作为数组并执行此操作

bootstrapTab_title = this.data.bootstrapTab_item[bootstrapTab_i]

真的不知道错误是否存在,但我认为找到错误的路径是重构以消除那些 eval,这可能是您问题的根源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2023-03-31
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多