html ファイルをアップロードして html ドキュメントのコンテンツを読み取り、このコンテンツをエディターに渡すことができるファイル ブラウザーを表示する機能を実装します。
最大ファイル サイズが 2MB の html ファイルのアップロードのみを許可するファイル ブラウザを開くツールバー ボタンを設定するにはどうすればよいですか。PHP の file_get_contents() のように、保存せずにファイルの内容を読み取ることはできますか。
html ファイルをアップロードして html ドキュメントのコンテンツを読み取り、このコンテンツをエディターに渡すことができるファイル ブラウザーを表示する機能を実装します。
最大ファイル サイズが 2MB の html ファイルのアップロードのみを許可するファイル ブラウザを開くツールバー ボタンを設定するにはどうすればよいですか。PHP の file_get_contents() のように、保存せずにファイルの内容を読み取ることはできますか。
そのために独自の TinyMCE プラグインを作成しました。プラグインの仕組みがわからない場合はhtmlFileImport
、TinyMCEplugins
ディレクトリの下に新しいフォルダーを作成してください。を呼び出している場合はtinymce.min.js
、このフォルダー内に という名前のファイルを作成しplugin.min.js
、それ以外の場合は名前を付けてplugin.js
、このコードを内部に貼り付けます
tinymce.PluginManager.add('htmlFileImport', function(editor, url) {
editor.addButton('htmlFileImport', {
text: "Import HTML File",
icon: false,
onclick: function() {
if(editor.getContent() == ""){
editor.showFileDialog();
}
else{
editor.showReplaceContentConfirmDialog();
}
}
});
editor.showReplaceContentConfirmDialog = function(){
eval(editor.dialogConfirmReplaceContentId).Open();
eval(editor.dialogConfirmReplaceContentId).setzIndex(101);
}
editor.showInvalidHtmlFileDialod = function(){
eval(editor.dialogInvalidHtmlFileId).Open();
eval(editor.dialogInvalidHtmlFileId).setzIndex(101);
}
editor.showFileDialog = function(){
var fileSelector = document.createElement('input');
fileSelector.setAttribute('type', 'file');
fileSelector.style.display = 'none';
fileSelector.onchange = function(e) {
var file = fileSelector.files[0];
if (file) {
var reader = new FileReader();
reader.readAsText(file, "UTF-8");
reader.onload = function (event) {
var bodyHtml = event.target.result;
var bodyOpen = bodyHtml.indexOf('<body');
if(bodyOpen == -1)
bodyOpen = bodyHtml.indexOf('< body');
var bodyClose = bodyHtml.indexOf('</body>') + 6;
if(bodyClose == -1)
bodyClose = bodyHtml.indexOf('</ body>') + 7;
if(bodyOpen != -1 && bodyClose != -1){
bodyHtml = bodyHtml.substring(bodyOpen, bodyClose);
var divHtml = document.createElement('div');
divHtml.style.display = 'none';
divHtml.innerHTML = bodyHtml;
editor.setContent(divHtml.innerHTML);
}
else{
editor.showInvalidHtmlFileDialod();
}
}
reader.onerror = function (evt) {
editor.showInvalidHtmlFileDialod();
}
}
};
fileSelector.click();
}
});
dialogConfirmReplaceContentId
とdialogInvalidHtmlFileId
は、関数内のエディターに以前に追加したカスタム プロパティinit
です。確かに独自のメカニズムがありますが、何が起こっているのかを理解できるように、このコードを使用します。
次に、この新しいプラグインを含めるには、エディターの作成中に次のような構成を追加して追加します。
tinymce.init({
plugins: [
'yourOtherPlugins htmlFileImport'
],
toolbar1: 'yourOtherPlugins htmlFileImport',
.....
});
HTML ファイルのみを許可する場合、ユーザーがこのファイルの種類をインポートすることを保証する方法がありません。ファイル名の拡張子が.html
またはであるかどうかを確認できます。または.htm
、私のように実行できます。内部にタグが見つからない場合<body>
、これは有効な HTML ではないと見なされます。
呼び出すだけでファイルサイズを確認できますfile.size
あなたは StackOverflow の初心者なので、質問をするときは、投稿する前に何かを試し、調査を行ったことを示す必要があることを伝えてください。ここでは、単純な Google 検索のように投稿しません。試した後、行き詰まったときに質問を投稿します。