我正在将TinyMce编辑器与laravel 5.6和laravel-elfinder一起使用。我必须上传音频文件,但编辑器无法识别音频文件,因此通过调用video_template_callback将其呈现为视频格式。因此,我将editor_config更改为:
var editor_config = {
selector: "textarea",
plugins: [
"image link lists textcolor imagetools table codesample textpattern media code"
],
video_template_callback: function(data){
console.log('call video');
return '<audio controls>' + '\n<source src="' + data.source1 + '"' + (data.source1mime ? ' type="' + data.source1mime + '"' : '') + ' />\n' + '</audio>';
},
audio_template_callback: function(data) {
console.log('call audio');
return '<audio controls>' + '\n<source src="' + data.source1 + '"' + (data.source1mime ? ' type="' + data.source1mime + '"' : '') + ' />\n' + '</audio>';
},
toolbar: "insertfile undo redo | styleselect | bold italic strikethrough | alignleft aligncenter alignright alignjustify | ltr rtl | bullist numlist outdent indent removeformat formatselect| link image media | emoticons charmap | code codesample | forecolor backcolor",
browser_spellcheck: true,
relative_urls: false,
remove_script_host: false,
media_poster: false,
media_filter_html: false,
file_browser_callback : function(field_name, url, type, win) {
tinymce.activeEditor.windowManager.open({
file: '<?= route('elfinder.tinymce4') ?>',// use an absolute path!
title: 'File Manager',
width: 900,
height: 450,
resizable: 'yes'
}, {
setUrl: function (url) {
win.document.getElementById(field_name).value = url;
}
});
},
setup:function(ed) {
ed.on('change', function(e) {
console.log('the content ', ed.getContent({ format: 'text' }));
});
}
};
[![tinymce.init(editor_config);][1]][1]
测试此设置时,控制台仅输出“呼叫视频”。
答案 0 :(得分:0)
在当前版本的TinyMCE(4.8.1)中,如果您查看媒体插件的代码,则会看到以下部分:
if (data.type === 'iframe') {
return getIframeHtml(data);
} else if (data.source1mime === 'application/x-shockwave-flash') {
return getFlashHtml(data);
} else if (data.source1mime.indexOf('audio') !== -1) {
return getAudioHtml(data, audioTemplateCallback);
} else if (data.type === 'script') {
return getScriptHtml(data);
} else {
return getVideoHtml(data, videoTemplateCallback);
}
为了使某些东西作为音频触发,其mime类型需要包含字符串audio
。如果所有其他测试均未通过,则将其视为“视频”,因此我的猜测是该文件上的mime类型不包含字符串audio
。