2014-04-21 21 views
0

編輯:看到我的答案爲發現的問題和解決方案。這是由於iframe調用上下文,儘管是相同的域通過tinyMCE.EditorManager.execCommand('mceAddControl',false,newId)添加tinymce時出現「操作不安全」錯誤;

我不明白爲什麼會發生此錯誤。我要通過這些步驟:

  1. 刪除TinyMCE的編輯

  2. 更改的textarea的id

  3. 添加TinyMCE的編輯到textarea的,其新的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。爲什麼?我怎麼這樣做?

回答

0

對於任何面臨着類似的問題,這裏有什麼問題是,我如何解決它:

問題

  1. 我提交表單到同一域的iFrame (因爲它有一個文件輸入,我不能使用ajax)

  2. iframe然後在父窗口調用方法讓它知道它已完成:window.parent.myObject.handleResponse({});

  3. 在方法handleResponse我被刪除並添加tinymce編輯器。

的問題是,TinyMCE的創建自己的內部框架,所以即使是同一產地/域和跨域的瀏覽器(Firefox)的拒絕它作爲一個不安全的操作爲孩子框架來調用父窗口的方法,在另一個iframe中執行某些操作。儘管所有人都是同一個領域,但調用環境並不允許這樣做。

的解

  1. 在此之前的形式提交給的IFRAME,啓動檢查被設定的響應值經由setInterval「觀察者」。

  2. window.parent.myObject.handleResponse({});只需設置響應值

  3. 當觀察者(這是在父窗口的情況下開始)看到變量已定,它可以改變所有的TinyMCE的編輯器。