Javascript 获得;“操作不安全”;通过tinymce.EditorManager.execCommand(';mceAddControl';,false,newId)添加tinymce时出错;

Javascript 获得;“操作不安全”;通过tinymce.EditorManager.execCommand(';mceAddControl';,false,newId)添加tinymce时出错;,javascript,tinymce,Javascript,Tinymce,编辑:查看我的答案以了解发现的问题和解决方案。这是由于iframe调用上下文,尽管它是同一个域 我不明白为什么会发生这种错误。我将经历以下步骤: 删除tinyMCE编辑器 更改textarea的id 使用新id将tinymce编辑器添加到该文本区域 代码 //Remove the tinyMCE editor for this text area (CHANGING TO "true" DOESN't HELP) tinyMCE.EditorManager.execCommand('mceRem

编辑:查看我的答案以了解发现的问题和解决方案。这是由于iframe调用上下文,尽管它是同一个域

我不明白为什么会发生这种错误。我将经历以下步骤:

  • 删除tinyMCE编辑器

  • 更改textarea的id

  • 使用新id将tinymce编辑器添加到该文本区域

  • 代码

    //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);
    

    最后一个抛出错误
    操作不安全
    。为什么?如何解决这个问题?

    对于任何面临类似问题的人,下面是问题所在以及我是如何解决的:

    问题

    //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);
    
  • 我正在向同一域的iframe提交表单(因为它有一个文件输入,所以我不能使用ajax)

  • iframe然后调用父窗口中的一个方法,让它知道它已经完成了:
    window.parent.myObject.handleResponse({})

  • 在方法
    handleResponse
    中,我被删除并添加了tinymce编辑器

  • 问题是tinymce创建了自己的iframe,因此,即使它是同一个源/域,而不是跨源,浏览器(Firefox)还是拒绝了它,因为子框架调用在另一个iframe中执行某些操作的父窗口方法是不安全的。尽管它们都是同一个域,但调用上下文不允许这样做

    解决方案

  • 在将表单提交到iframe之前,通过
    setInterval
    启动一个“观察者”,检查要设置的响应值

  • 拥有
    window.parent.myObject.handleResponse({})只需设置该响应值

  • 当观察程序(在父窗口的上下文中启动)看到变量已设置时,它可以更改所有tinymce编辑器