得到"操作不安全”;通过tinymce添加tinymce时出错.EditorManager.execComma
Getting "The operation is insecure" error when adding tinymce via tinyMCE.EditorManager.execCommand( 'mceAddControl',false, newId);
编辑:请参阅我对发现的问题和解决方案的回答。这是由于iframe调用上下文,尽管是同一域
我不明白为什么会发生这个错误。我正在经历以下步骤:
-
删除tinyMCE编辑器
-
更改文本区域的id
-
将tinymce编辑器添加到具有新id 的文本区域
代码
//Remove the tinyMCE editor for this text area (CHANGING TO "true" DOESN't HELP)
tinyMCE.EditorManager.execCommand('mceRemoveControl',false, myTextArea.id );
//Change the id
myTextArea.id = newId;
//Add a tiny mce editor (CHANGING TO "true" DOESN't HELP)
tinyMCE.EditorManager.execCommand('mceAddControl',false, newId);
最后一个抛出错误the operation is insecure
。为什么?我该怎么做?
对于任何面临类似问题的人,以下是问题所在以及我是如何解决的:
问题
-
我向同一域的iframe提交了一个表单(因为它有文件输入,我不能使用ajax)
-
然后iframe在父窗口中调用一个方法,让它知道它已经完成了:
window.parent.myObject.handleResponse( {} );
-
在方法
handleResponse
中,我删除并添加了tinymce编辑器。
问题是tinymce创建了自己的iframe,所以即使它是同一个来源/域,而不是交叉来源,浏览器(Firefox)还是拒绝了它,因为它是一个不安全的操作,子框架调用在另一个iframe中执行某些操作的父窗口的方法。尽管它们都是同一个域,但调用上下文不允许这样做。
解决方案
-
在将表单提交到iframe之前,请通过
setInterval
启动一个"观察程序",检查要设置的响应值。 -
让
window.parent.myObject.handleResponse( {} );
简单地设置响应值 -
当观察程序(在父窗口的上下文中启动)看到变量已设置时,它可以更改所有的tinymce编辑器。
相关文章:
- TinyMCE在新添加的文本区域
- TinyMCE:添加复杂格式
- tinyMCE不会添加特定文本区域的Control
- TinyMCE 将另一个事件添加到粗体和斜体按钮
- 如何防止 TinyMCE 将 CDATA 添加到<脚本>标签中,并注释掉<样式>标签
- 使用AngularJs在自定义TinyMCE编辑器中添加动态数据
- 添加<pre>TinyMce 4中的标签按钮
- 将自定义格式添加到 joomla 中的 Tinymce 编辑器中
- Tinymce编辑器图像上传插件添加完整的图像URL
- tinyMCE:如何添加快捷键Ctrl + Enter
- 如何在 tinymce 的第一段中添加 html 链接
- Tinymce 4 如何添加事件处理程序
- TinyMCE:如何手动显示添加/编辑链接窗口
- 在django中为TinyMCE添加外部插件
- 将TinyMCE添加到我的动态表单表中
- 向wordpress中的tinyMCE添加内容
- 为什么TinyMCE添加dir="ltr"致我所有粘贴的标签
- 得到"操作不安全”;通过tinymce添加tinymce时出错.EditorManager.execComma
- TinyMCE添加切换样式
- 通过单击灯箱中的单选按钮向tinymce添加内容