gpt4 book ai didi

javascript - 使用 Javascript 将文件加载到 CKEditor 文本区域

转载 作者:行者123 更新时间:2023-12-03 05:38:28 24 4
gpt4 key购买 nike

尝试使用输入按钮和 JavaScript 将文件加载到 CKEditor 4 文本区域中。这些文件包含简单的 HTML 代码,扩展名为 .inc 和 .txt

我所拥有的有效,但只有在使用浏览器后退/前进按钮之后(学生错误地发现了)。使用输入从本地驱动器加载文件,文本区域变为空白,但加载的文件仅在使用浏览器后退/前进按钮后出现?

这是我们正在使用的 HTML:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://cdn.ckeditor.com/4.5.11/standard/ckeditor.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
<body>

<textarea name="editor1" id="editor1" rows="10" cols="80">
Placeholder text...
</textarea>
<script>
CKEDITOR.replace( 'editor1' );
</script>

<input name="file" type="file" id="files" class="form-control" value="">

<script type="text/javascript">
function readTextFile(file, callback, encoding) {
var reader = new FileReader();
reader.addEventListener('load', function (e) {
callback(this.result);
});
if (encoding) reader.readAsText(file, encoding);
else reader.readAsText(file);
}

function fileChosen(input, output) {
if (input.files && input.files[0]) {
readTextFile(
input.files[0],
function (str) {
output.value = str;
}
);
}
}

$('#files').on('change', function () {
var result = $("#files").text();
//added this below testing
fileChosen(this, document.getElementById('editor1'));
CKEDITOR.instances['editor1'].setData(result);
});
</script>

</body>
</html>

也放在JSFiddle

W3schools

仅供引用:浏览器后退/前进之谜在上述两个网站上不起作用,只有当我在本地或服务器上使用时才起作用。

在类里面尝试解决这个问题三天后,我来到这里征求意见。我们花了几个小时尝试在这里和许多网站上找到的不同方法。

安全性不是输入文件限制的问题,仅在类里面用于培训目的/示例。

有人吗?

最佳答案

好的,我成功了。为了替换文本,您需要在 CKEDITOR 实例 上调用 setData(str); 方法,而不是在 DOM 元素上调用。您还需要告诉编辑器更新(“重画”)其内容。

所以:

文件选择

function fileChosen(input, output) {
if ( input.files && input.files[0] ) {
readTextFile(
input.files[0],
function (str) {
output.setData(str); // We use the setData() method
output.updateElement(); // Then we tell the CKEditor instance to update itself
}
);
}
}

文件输入更改

$('#files').on('change', function () {
var result = $("#files").text();
fileChosen(this, CKEDITOR.instances.editor1); // We pass the CKEDITOR instance, not the DOM element
});

我还进行了一些更改,例如在 CKEDITOR javascript 文件之前导入 jQuery。

查看结果in this fiddle

关于javascript - 使用 Javascript 将文件加载到 CKEditor 文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40642996/

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