Avatar billede gbjensen65 Nybegynder
30. december 2012 - 10:28 Der er 7 kommentarer og
1 løsning

Jquery dialog, Tinymce editor og IE9 problem

Hej Eksperter (hvilket jeg ikke er i denne her sag)

Jeg har i en Jquery dialog et tekst felt med en Tinymce editor. Det hele virker faktisk fint, men når jeg lukker dialogen, så opstår der et problem i IE9: (virker problemfrit i ff og chrome)
Vinduet lukker som det skal, siden bag ved bliver opdateret og alt ser fint ud, men jeg kan ikke aktivere mit søgefelt, cursor vil ikke blinke i feltet på hovedsiden. hvis jeg refresher siden, så er alt ok igen.
Jeg er kommet frem til at det er måden som Tinymce editoren lukkes på når dialogen lukkes, der er problemet, for hvis jeg deaktivere editoren fra dialogen (med et link) så lukkes dialogen fint og alt virker.

Her lidt kode:

<div id="newreview" title="Ny &Oslash;lanmeldelse"><div id="nyanmd"></div></div>

<script>

$( "#newreview" ).dialog({ autoOpen: false,
        width: 900,
        height: 600,
        modal: true,
        beforeclose: function(){
                  tinyMCE.execCommand('mceRemoveControl',              false,'tekst');
        },
        close: function() {
                  closeAddReview('reviewlist');
        }
});

function closeAddReview(type){
  var ajaxRequest;  // The variable that makes Ajax possible!
  try{
  ajaxRequest = new XMLHttpRequest();
  } catch (e){
    try{
    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try{
      ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e){
      alert("Your browser broke!");
      return false;
      }
    }
      }
  ajaxRequest.onreadystatechange = function(){
    if(ajaxRequest.readyState == 4 && ajaxRequest.status==200){
      document.getElementById(type).innerHTML=ajaxRequest.responseText;
    }
  }
  tinyMCE.execCommand('mceRemoveControl', false,'tekst');        //luk editor
  document.getElementById('nyanmd').innerHTML="";  //tøm formular!
  var queryString=document.getElementById('returnlink').innerHTML;
  queryString=queryString.replace(/&/g,"&");
  if(type=='beerlist')
    ajaxRequest.open("GET", "/ajax/updatebeer.php" + queryString + "&rand=" + Math.random(), true);
  else
    ajaxRequest.open("GET", "/ajax/updatereview.php" + queryString + "&rand=" + Math.random(), true);
  ajaxRequest.send(null);
}

Jeg har forsøgt med "beforeclose" og her lade editoren "dø", men
hvis jeg ikke har linjen "tinyMCE.execCommand('mceRemoveControl', false,'tekst');"
i det ajax kald der lukker dialogen så kan jeg ikke aktivere
tinymce editoren igen. Jeg tømmer dernæst min formular for ikke at få konflikt
med andre dialoger som brugeren kan aktivere.

Bruger nyeste version at Tinymce og jquery

Håber at der er en der har en god ide!?!
Avatar billede olebole Juniormester
30. december 2012 - 11:09 #1
<ole>

Jeg tror, du må lægge et link  =)

/mvh
</bole>
Avatar billede gbjensen65 Nybegynder
30. december 2012 - 13:51 #2
Ok det kommer her, men for at få adgang skal du logge ind først. Login her:
http://www.goodbeer.dk/fp.php
Jeg har oprettet en testuser til formålet. skriv testuser i både brugernavn og password. Efter login bliver I ledt direkte til siden hvor problemet kan ses.
Fra http://www.goodbeer.dk/fp.php kan du også klikke på linket "Ølanmeldelser" i øvre højre hjørne af siden.
Fra siden med nyeste ølanmeldelser kan I aktivere en ny anmeldelse ved at klikke på "Anmeld øl" under en af de andre anmeldelser.
Der kommer så en dialog, som I ikke bør skrive noget i, bare lukke den med "X" ikonet i øvre højre hjørne. Og fejlen skulle gerne være synlig ved at cursor ikke kan placeres i søgefeltet øverst til højre. (hvis du bruger IE9)

På forhånd mange tak!
Avatar billede herlevsen123 Nybegynder
31. december 2012 - 14:16 #3
Prøv at trykke f12 i ie9 og herefter script->start debugging. Der kommer bl.a. en fejl med et apostrof der skal escapes. (:
Avatar billede gbjensen65 Nybegynder
31. december 2012 - 17:14 #4
Til herlevsen123:

Fejlen du henviser til er nu rettet, men det ændre intet ved det oprindelige problem.

Mvh. Lars
Avatar billede gbjensen65 Nybegynder
02. januar 2013 - 13:47 #5
Jeg har oprettet en demo side, der ikke kræver noget login og som kun har en blind dialog. (testuser kan ikke længere anvendes)

Prøv siden her http://goodbeer.dk/demo.php i IE9

Hvis I klikke på "Open Dialog" så kommer der en dialog med en Tinymce editor i. Lukkes dialogen igen, kan man ikke bruge søgefeltet. Hvis du opdatere siden så virker søgefeltet igen. Prøv så igen at åbne dislogen, men inden du lukker den igen så klik på "editor" knappen. Efter du har lukket dialogen virker søgefeltet.

Er der nogen der har en god forklaring?
Avatar billede gbjensen65 Nybegynder
14. januar 2013 - 11:59 #6
I mangel af bedre har jeg selv fundet en midlertidig løsning:

Simpelt men effiktivt: Ved close af dialog, checker om browser er fra MS og reloader hele siden.
updatePage(); opdatere ellers de ændrede div'er, med desværre er en reload nødvendig i IE9
En kommende løsning kunne måske være at indlægge axaj kaldet i diaglog'en herunder, men det skal lige programmeres og testes først.

$( "#dialog" ).dialog({ autoOpen: false,
    width: 900,
    height: 600,
    modal: true,
    close: function() {
                    updatePage();
        if ( $.browser.msie ) {
            window.location.reload();
        }
    }
});
Avatar billede olebole Juniormester
14. januar 2013 - 17:19 #7
Sorry, jeg havde ikke set, tråden var kommet videre  =)

Der er tydeligvis en fejl i MCEditor med hensyn til fokustildeling. Hvis feltet i editoren har haft fokus, opstår problemet ikke. Det opstår kun, hvis man åbner editoren og lukker den med det samme - uden at klikke i editorens tekstfelt
Avatar billede olebole Juniormester
14. januar 2013 - 17:21 #8
Du burde nok sende en bug-rapport til MCE-folkene  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester