2010-08-17 14 views
6

Po kliknięciu przycisku, który powoduje odświeżenie strony na UpdatePanel, wywołuje on tinyMCE.triggerSave().Jak zachować TinyMCE po odświeżeniu strony w UpdatePanel

To przeładowuje panel i redaktor pokazać się ponownie, ale gdy próbuję zadzwonić tinyMCE.triggerSave() po raz drugi pojawia się następujący błąd:

g.win.document is null 

I choć był już stary instancji, ale ja” m także usunięcie kontroli (tinyMCE.execCommand('mceRemoveControl',false,'Editor');) po wywołaniu zapisu. Mimo to po raz drugi wciąż ulega awarii.

Jak mogę to naprawić?

+1

Czy spojrzał na http://stackoverflow.com/questions/699615/cant-post- dwa razy od tego samego-ajax-tinymce-textarea i http://stackoverflow.com/questions/547327/how-to-make-tinymce-work-inside-an-updatepanel? – Tchami

Odpowiedz

2

Po wielu nieporozumieniach odkryłem, że poprawka, którą opublikował @André Gadonski, nie działa już w wersji TinyMCE 4. Nie tylko nie działa, ale nie dostarcza informacji zwrotnej o błędach do konsoli!

Nowa komenda jest mceRemoveEditor

Źródło: http://www.tinymce.com/forum/viewtopic.php?id=31256

Okazało się, że to może być wykorzystane bezpośrednio przed ponownym initalising TinyMCE lub tuż przed panelu aktualizacji ASP jest odświeżony za pomocą;

var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_beginRequest(BeginRequestHandler); 

function BeginRequestHandler(sender, args) { 
    tinymce.execCommand('mceRemoveEditor', true, 'EditorID'); 
} 
+0

To! pamiętaj aby wywołać 'tinyMCE.triggerSave();' zanim to zrobisz inaczej stracisz wszystko, co wpisałeś w edytorze. – GJKH

+0

Utknąłem przez 3 godziny w tym numerze, czy napisałeś powyższy kod w funkcji '$ (document) .ready ({..})'? – Kamran

6

tinyMCE.execCommand ("mceRemoveControl", true, "Editor");

Przed opuszczeniem UpdatePanel, zmusi tinyMCE do całkowitego usunięcia, a kiedy dodasz ponownie, nie ulegnie awarii.

+1

DZIĘKUJĘ !! To doprowadza mnie do szaleństwa! Dziękuję bardzo! Zrobiłem to już ponad 90 minut. – Lukas

2

Dla tinymce 3.2.x, użyj następującej procedury, aby usunąć instancję tinyMCE w IE8 lub dowolnej innej przeglądarce. Funkcja tinymce.execCommand sprawia, że ​​pola wejściowe stają się nieistotne w IE8.

tinyMCE.remove(editor); //editor is instance of tinymce editor and not editor id 

Naprawi błąd "Odmowa uprawnień" bez wyłączania innych pól wprowadzania na tej samej stronie.

2

Mam ten sam problem. Dla poprawienia masztu dodaj kod skryptu dla elementu Utwórz post z powrotem. mój przycisk tworzenia posta z powrotem, dodaję go OnClientClick():

<asp:LinkButton ID="lbnSave" OnClick="lbnSave_Click" ToolTip="Add New" OnClientClick="dotim()" 
         runat="server">save</asp:LinkButton> 

i skrypt jest:

function dotim() { 
    tinyMCE.triggerSave(); 
    } // this is my attempt at a fix 
Powiązane problemy