TinyMCE + jbimages +自动调整不调整大小

时间:2014-04-23 02:46:28

标签: tinymce

我使用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);
            }
        })
    }
});

1 个答案:

答案 0 :(得分:-1)

我有一个想法,但我的问题没有这个,但它已经解决了许多图像问题。

ini_set("memory_limit","120M");

必须将其放在jbimages\ci\system\libraries\Upload.php文件

在这一行之上:

@copy($this->file_temp, $this->upload_path.$this->file_name);

它可以解决您的问题。