我使用TinyMCE和jbimages插件上传图片。我还激活了autoresize插件,因此编辑器会在添加/删除内容时自动扩展和缩小。
除非上传大于编辑器视口的图像,否则一切正常。在这种情况下,编辑不会扩展。
初始化tinyMCE的代码如下:
tinyMCE.init({
menubar: false,
statusbar: false,
selector: "textarea",
plugins: [
"advlist autolink autoresize lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste jbimages textcolor"
],
toolbar: "jbimages",
relative_urls: false
});
我的标记看起来像:
<div class="control-group" id="cgroup-order[message]">
<label class="control-label required" id="label-order[message]" for="order[message]">Message to send:</label>
<div class="controls" id="controls-order[message]">
<textarea name="order[message]" class="pull-left span3 message" id="order[message]"></textarea>
</div>
当jbimages插入图像时,似乎没有执行mceAutoResize命令。我已经尝试过将类似的内容添加到init参数中:
setup: function(editor) {
editor.on('SetContent', function(e) {
editor.execCommand('mceAutoResize');
});
}
但它并没有多大帮助。任何想法如何正常工作?
修改 当我在插入图像后按一个键或按下鼠标按钮时,编辑器将被调整大小,但它不会自动发生。
编辑2: 好的,所以我至少知道这种行为的原因。会发生什么是autoresize插件响应编辑器的SetContent事件。在插入大图像时,浏览器可能会也可能不会渲染图像。如果没有完成渲染图像,自动调整计算的新高度仍然是旧的高度,原因很明显。
我尝试过很多不同的事情,例如捕获mce的iframe的加载事件,但这只会在最初加载页面时触发。
我最终以一种非常肮脏的方式解决它,使用1秒超时来为浏览器提供更多时间来渲染图像。当然,这是最好的胶带解决方案,因为它可能无法在较慢的客户端上运行。如果有人有更好的解决方案,请告诉我。
我的代码现在看起来像这样:
tinyMCE.init({
menubar: false,
statusbar: false,
selector: "textarea",
plugins: [
"advlist autolink autoresize lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste jbimages textcolor"
],
//toolbar: "insertfile undo redo | styleselect | forecolor | bold italic | alignleft aligncenter alignright alignjustify | link | jbimages",
toolbar: "jbimages",
relative_urls: false,
autoresize_min_height: 200,
//autoresize_max_height: 800,
setup: function(editor) {
editor.on('SetContent', function(e) {
if (e.content.indexOf('<img ') == 0)
{
setTimeout(function(){ tinymce.activeEditor.execCommand('mceAutoResize'); }, 1000);
}
})
}
});
答案 0 :(得分:-1)
我有一个想法,但我的问题没有这个,但它已经解决了许多图像问题。
ini_set("memory_limit","120M");
必须将其放在jbimages\ci\system\libraries\Upload.php
文件
在这一行之上:
@copy($this->file_temp, $this->upload_path.$this->file_name);
它可以解决您的问题。