逃避EOL

我正在尝试使用简单的WYSIWYG编辑器。 JSLint称其“逃避了EOL”。 由于我是javascript的新手,因此我很难弄清楚它的含义,因为我正在使用在线找到的代码。 有人能告诉我,我应该做什么,而不是用斜线结束这一行?

以下是有问题的代码: http : //jsfiddle.net/spadez/KSA5e/9/

/* * WYSIWYG EDITOR BASED ON JQUERY RTE */ // define the rte light plugin (function ($) { if (typeof $.fn.rte === "undefined") { var defaults = { content_css_url: "rte.css", dot_net_button_class: null, max_height: 350 }; $.fn.rte = function (options) { $.fn.rte.html = function (iframe) { return iframe.contentWindow.document.getElementsByTagName("body")[0].innerHTML; }; // build main options before element iteration var opts = $.extend(defaults, options); // iterate and construct the RTEs return this.each(function () { var textarea = $(this); var iframe; var element_id = textarea.attr("id"); // enable design mode function enableDesignMode() { var content = textarea.val(); // Mozilla needs this to display caret if ($.trim(content) === '') { content = '
'; } // already created? show/hide if (iframe) { console.log("already created"); textarea.hide(); $(iframe).contents().find("body").html(content); $(iframe).show(); $("#toolbar-" + element_id).remove(); textarea.before(toolbar()); return true; } // for compatibility reasons, need to be created this way iframe = document.createElement("iframe"); iframe.frameBorder = 0; iframe.frameMargin = 0; iframe.framePadding = 0; iframe.height = 200; if (textarea.attr('class')) iframe.className = textarea.attr('class'); if (textarea.attr('id')) iframe.id = element_id; if (textarea.attr('name')) iframe.title = textarea.attr('name'); textarea.after(iframe); var css = ""; if (opts.content_css_url) { css = ""; } var doc = "" + css + "" + content + ""; tryEnableDesignMode(doc, function () { $("#toolbar-" + element_id).remove(); textarea.before(toolbar()); // hide textarea textarea.hide(); }); } function tryEnableDesignMode(doc, callback) { if (!iframe) { return false; } try { iframe.contentWindow.document.open(); iframe.contentWindow.document.write(doc); iframe.contentWindow.document.close(); } catch (error) { console.log(error); } if (document.contentEditable) { iframe.contentWindow.document.designMode = "On"; callback(); return true; } else if (document.designMode !== null) { try { iframe.contentWindow.document.designMode = "on"; callback(); return true; } catch (error) { console.log(error); } } setTimeout(function () { tryEnableDesignMode(doc, callback); }, 500); return false; } function disableDesignMode(submit) { var content = $(iframe).contents().find("body").html(); if ($(iframe).is(":visible")) { textarea.val(content); } if (submit !== true) { textarea.show(); $(iframe).hide(); } } // create toolbar and bind events to it's elements function toolbar() { var tb = $("
\

\ Bold\ Italic\ List\

"); $('.bold', tb).click(function () { formatText('bold'); return false; }); $('.italic', tb).click(function () { formatText('italic'); return false; }); $('.unorderedlist', tb).click(function () { formatText('insertunorderedlist'); return false; }); // .NET compatability if (opts.dot_net_button_class) { var dot_net_button = $(iframe).parents('form').find(opts.dot_net_button_class); dot_net_button.click(function () { disableDesignMode(true); }); // Regular forms } else { $(iframe).parents('form').submit(function () { disableDesignMode(true); }); } var iframeDoc = $(iframe.contentWindow.document); var select = $('select', tb)[0]; iframeDoc.mouseup(function () { setSelectedType(getSelectionElement(), select); return true; }); iframeDoc.keyup(function () { setSelectedType(getSelectionElement(), select); var body = $('body', iframeDoc); if (body.scrollTop() > 0) { var iframe_height = parseInt(iframe.style['height']); if (isNaN(iframe_height)) iframe_height = 0; var h = Math.min(opts.max_height, iframe_height + body.scrollTop()) + 'px'; iframe.style['height'] = h; } return true; }); return tb; } function formatText(command, option) { iframe.contentWindow.focus(); try { iframe.contentWindow.document.execCommand(command, false, option); } catch (e) { //console.log(e) } iframe.contentWindow.focus(); } function setSelectedType(node, select) { while (node.parentNode) { var nName = node.nodeName.toLowerCase(); for (var i = 0; i < select.options.length; i++) { if (nName == select.options[i].value) { select.selectedIndex = i; return true; } } node = node.parentNode; } select.selectedIndex = 0; return true; } function getSelectionElement() { if (iframe.contentWindow.document.selection) { // IE selections selection = iframe.contentWindow.document.selection; range = selection.createRange(); try { node = range.parentElement(); } catch (e) { return false; } } else { // Mozilla selections try { selection = iframe.contentWindow.getSelection(); range = selection.getRangeAt(0); } catch (e) { return false; } node = range.commonAncestorContainer; } return node; } // enable design mode now enableDesignMode(); }); //return this.each }; // rte } // if $(".rte-zone").rte({}); })(jQuery);

编辑:对于奖励标记,还有两个其他错误,我无法挤压 –

  • 缺少基数参数
  • 高度用点符号写得更好

JS不支持使用\直到ES5的行末尾转义 – 您可以使用带有+运算符的多个字符串,即

 "string 1" + "string 2" + "string 3" 

回复:你的其他问题:

  1. 使用parseInt(n, 10)强制base(aka radix )10,即decimal

  2. 使用iframe.style.height而不是iframe.style['height']

你有两个选择:

1)根据@csharpfolk的建议激活multistr: true 。 (您可以通过添加/*jshint multistr: true */在文件级别执行此操作,或将其添加到您的.jshintrc配置文件( .jshintrc.eslintrc等)中)。

2)按照@Altinak的建议替换多字符串或使用数组并加入:

["string 1", "string 2", "string 3", ].join('')