Avatar billede krogstrup Nybegynder
29. november 2001 - 09:44 Der er 7 kommentarer og
1 løsning

Undersøge om brugeren har ændret på indhold af DIV !?!

Jeg har en lidt tricky problemstilling vedr. et CMS system, jeg er i gang med at bygge:

Jeg har en DIV hvor contenteditable er slået til, således at brugeren kan ændre på indholdet af denne DIV.

Jeg har samtidig følgende event-handler i BODY:

onbeforeunload=\"if (saved!=\'yes\'){return \'Har du husket at gemme eventuelle ændringer ?\'}\"

Dvs. at medmindre variablen \"saved\" er sat til \"yes\" fremkommer en advarsel inden brugeren forlader siden. Dette medfører desværre at advarslen også kommen selv om brugeren IKKE har ændret på indholdet. Det er jo ikke så genialt.

Derfor har jeg brug for et script der kan detecte ændringer i indholdet af min DIV - hvis der foretages ændringer skal variablen \"saved\" sættes til \"no\"

Kan det lade sig gøre ?
Avatar billede olebole Juniormester
29. november 2001 - 13:07 #1
<ole>
Desværre har MS ikke implementeret en event, der håndterer dette scenarium. \'onpropertychange\' udelukker desværre også ændringer i et div\'s innerText eller innerHTML  :(
Læg indholdet ind i en variabel, når du loader div\'et og sammenlign så med det aktuelle indhold, når brugeren forlader siden.

Hold.da.op.hvor.du.kører.projekt.i.øjeblikket!  =o)))
/mvh
</bole>
Avatar billede krogstrup Nybegynder
29. november 2001 - 14:06 #2
Hej Ole

Så kom du endelig - du var længe ventet :-)

Jeg har dog et lille problem med dit løsningsforslag. Indholdet til min DIV er jo en masse tekst, billeder & HTML koder. Indholdet her indeholder jo en masse \"´er. Når jeg hælder dette indhold over i en javascript-variabel bliver den gal på mig over at der er \" i indholdet !?!?
Avatar billede olebole Juniormester
29. november 2001 - 14:28 #3
Naarrrrjjjjj, Krogen - prøv at skrive lidt gåseøjne og noget i dette eksempel:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<script type=\"text/JavaScript\">
var startCont;
function krogTest() {
    startCont = document.getElementById(\"krog\").innerHTML;
}
function unLoadTest() {
    var endCont = document.getElementById(\"krog\").innerHTML;
    alert(startCont+\"\\n\\n\"+endCont);
}
</script>
</head>
<body onload=\"krogTest()\">

<div id=\"krog\" contenteditable>
  khgfkshgf \"ghgjkgh\" jkglkdfgblkdxfv
</div>

<button onclick=\"unLoadTest();\">TEST</button>
</body>
</html>

;o))
/mvh
Avatar billede krogstrup Nybegynder
29. november 2001 - 14:59 #4
Hmmm - hvad gør jeg galt Ole:

<html>
<head>
<script type=\"text/JavaScript\">
function onStart() {
    var startContent = document.getElementById(\"myDiv\").innerHTML;
}
function onEnd() {
    var endContent = document.getElementById(\"myDiv\").innerHTML;
}
</script>
</head>

<body onload=\"onStart()\" onBeforeUnload=\"onEnd();if(startContent!=endContent){return \'Du har foretaget ændringer\'}else{return \'Du har ikke foretaget ændringer\'}\">

<div id=\"myDiv\" contenteditable>Hej Svend !</div>

</body>
</html>
Avatar billede olebole Juniormester
29. november 2001 - 15:07 #5
Du skal definere dine variabler globalt - og så skal du endelig huske at slette dine \'var\' inde i funktionerne:

<html>
<head>
<script type=\"text/JavaScript\">
var startContent, endContent;
function onStart() {
    startContent = document.getElementById(\"myDiv\").innerHTML;
}
function onEnd() {
    endContent = document.getElementById(\"myDiv\").innerHTML;
}
</script>
</head>

<body onload=\"onStart()\" onBeforeUnload=\"onEnd();if(startContent!=endContent){return \'Du har foretaget ændringer\'}else{return \'Du har ikke foretaget ændringer\'}\">

<div id=\"myDiv\" contenteditable>Hej Svend !</div>

</body>
</html>

/mvh
Avatar billede krogstrup Nybegynder
29. november 2001 - 15:38 #6
Perfekt - nu virker det efter hensigten :-)
Avatar billede olebole Juniormester
29. november 2001 - 15:41 #7
Jaaahhhh .....det hjalp, da jeg kom fra Mac\'en til PC\'en (...på dette punkt!). Nu lever jeg faktisk af DHTML-editoren  ;o))
Tak, for points  :)
/mvh
Avatar billede krogstrup Nybegynder
30. november 2001 - 10:13 #8
Ja den er ikke helt så dum :-)
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