小编Rva*_*aak的帖子

防止在 TinyMCE 中输入默认键盘事件

我们一直忙于将 TinyMCE 从 3.x 升级到 4.2.5,无法阻止默认ENTER操作的发生。

我们的目标是在CTRL + enter按下时提交表单,重要的是提交应该在将换行符添加到 TinyMCE 之前发生。该3.x分支使我们能够将事件添加到队列的顶部:

// Important: inject new eventHandler via addToTop to prevent other events
tinymce.get('tinymce_instance').onKeyDown.addToTop(function(editor, event) {
    if (event.ctrlKey && event.keyCode == 13) {
        $("form").submit();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,我们无法弄清楚如何再次将其添加到事件的顶部。

event.preventDefault()并且event.stopPropagation()没有预期的效果,因为输入已经存在。奇怪的是它确实适用于其他键,可以防止字母数字键。http://jsfiddle.net/zgdcg0cj/

可以使用以下代码段添加事件:

tinymce.get('tinymce_instance').on('keydown', function(event) {
    if (event.ctrlKey && event.keyCode == 13) {
        $("form").submit();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

问题:当我们的事件处理程序被调用时,换行符会提前添加到 TinyMCE 内容中,因此存储了不需要的输入。如何将事件添加到4.x分支的顶部,或防止换行发生?

javascript tinymce tinymce-4

5
推荐指数
1
解决办法
4260
查看次数

Libreoffice headless Process结果不返回,而是等待超时

我们已经使用了libreoffice --headless一段时间,首先是通过 Debian,在过去的几个月里我们切换到了 CentOS。我们使用Symfony Process命令将 a 转换docxpdf,简化的命令如下所示:

libreoffice --headless --convert-to pdf \ 
    --outdir /home/conversionoutdir \
    /home/conversionindir/4f00ac05aee274967b.docx
Run Code Online (Sandbox Code Playgroud)

执行上述命令的 Symfony 进程非常简单:

    $process = new Process($cmd);
    $process->mustRun();
Run Code Online (Sandbox Code Playgroud)

一切都工作正常,但几天后转换不再完成,该过程将一直等待,直到达到 60 秒超时。

一直在通过在我们的服务器上执行完全相同的转换来调试此问题DEV,一切都很好。还尝试转换小文档和大文档,以查看页数对于达到超时的影响。还直接在命令行上执行命令,转换也可以,并在几秒钟内完成。

我们的应用程序捕获异常,并将其发送到记录器:

进程 \"/usr/bin/libreoffice --headless --nologo --nofirststartwizard --norestore --convert-to pdf:writer_web_pdf_Export --outdir /home/conversionoutdir /home/conversionindir/4f00ac05aee274967b.docx\" 超出超时60 秒。

看来 PHP 无法再跟踪进程了。这里可能发生了什么?关于如何进一步调试这个的任何线索?

编辑:在抽象出 Symfony 进程组件、将conversionoutdir权限设置为 777 并执行以下代码片段后,如果从 PHP 执行,转换仍然会挂起:

$output = array();
exec('libreoffice --headless --convert-to pdf \ 
    --outdir /home/conversionoutdir \
    /home/conversionindir/4f00ac05aee274967b.docx', $output);
print_r($output);
Run Code Online (Sandbox Code Playgroud)

php symfony libreoffice symfony-process

4
推荐指数
1
解决办法
1860
查看次数