gpt4 book ai didi

javascript - 错误的 EOL 转义

转载 作者:行者123 更新时间:2023-12-03 21:48:01 27 4
gpt4 key购买 nike

我正在尝试使用简单的所见即所得编辑器。 JSLint 表示它有“Bad escapeing of 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 = '<br />';
}

// 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 = "<link type='text/css' rel='stylesheet' href='" + opts.content_css_url + "' />";
}

var doc = "<html><head>" + css + "</head><body class='frameBody'>" + content + "</body></html>";
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 = $("<div class='rte-toolbar' id='toolbar-" + element_id + "'><div>\
<p>\
<a href='#' class='bold'>Bold</a>\
<a href='#' class='italic'>Italic</a>\
<a href='#' class='unorderedlist'>List</a>\
</p></div></div>");

$('.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) 强制基数(又名基数)为 10,即十进制

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

关于javascript - 错误的 EOL 转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17832052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com