强制CKEditor从磁盘加载HTML文件

时间:2018-01-13 21:48:15

标签: ckeditor

我正在尝试使用CKEditor编辑相当长的HTML文件。我需要稍微编辑底层HTML,但搜索和替换插件不适用于底层代码。我希望通过键盘快捷键或宏来自动完成我一遍又一遍的事情。

例如,我反复需要更改特定div类的名称 - 例如,从“todo”更改为“done”。

.... div class =“todo”..... ===> .... div class =“done”....

我现在正在使用Autohotkey宏来自动执行鼠标移动和鼠标点击,以及切换到源模式和退出源模式,但这非常笨重且不可靠。由于我每天都会对显示文件的30个部分执行此操作,因此我希望它快速而强大。我想使用Python或Autohotkey来处理底层文件。所以我的问题是:当基础文件发生变化时,如何自动更新CKEditor - 即从磁盘重新加载文件?

目标是让一个按键调用Python或AHK,使用它们在文件中进行更改,然后强制CKE更新显示(“完成”通过更改该部分的背景颜色显示自己)

1 个答案:

答案 0 :(得分:0)

Javascript无法直接从光盘读取文件。 (除了手动选择,例如https://www.html5rocks.com/en/tutorials/file/dndfiles/) 因此,需要使用服务器端语言,并在页面加载或使用AJAX请求时获取文件内容。

例如使用ajax jquery

    $.ajax({
        url: "/path/to/your/file.html",
        async: false,
        success: function (result){
            CKEDITOR.instances["YOUR_INSTANCE"].setData(result)
        }
    });

但是,对于更改类和其他html相关的任务。可以使用javascript / jquery来处理CKEDITOR内容。

e.g。

HTML

<textarea id="ckeditor"><div class="todo">lol</div></textarea>

JS

CKEDITOR.replace("ckeditor", { allowedContent: true, });

CKEDITOR.on( 'instanceReady', function( evt ) {      
    $(CKEDITOR.instances["ckeditor"].window.$.document).find('.todo').removeClass( "todo" ).addClass( "done" ); 
})

<强>更新 您需要将url: "/path/to/your/file.html",替换为要打开的文件路径。 (请同样检查我的CKEditor实例是否命名为'editor1'是否正确)并在加载jquery后放入此代码。

<script>
$( document ).ready(  
    $.ajax({
        url: "/path/to/your/file.html",
        async: false,
        success: function (result){
            CKEDITOR.instances["editor1"].setData(result);
        }
    }));
</script>