PDA

Bekijk Volledige Versie : Probleem met Javascript inside PHP



Danny
07/12/05, 00:15
Hallo allemaal,

Ik zit met het volgende probleem:

Ik heb een php-script welke op een bepaald moment een popup venster
opent. Nu wil ik dit popup venster sluiten wanneer men met de linkse
of rechtse muisknop hierop klikt.
Nu dacht ik gewoon het javascriptje dmv "echo" in het php-script te
zetten maar ik blijf maar steeds een foutmelding krijgen.

Ziet iemand misschien mijn fout want ik snap het niet meer?!
Dit is een stuk van mijn code waarin ik het javascriptje wil toevoegen

knip
echo "popup.document.write(\"<html><head><title>\"
+name+\"</title><meta http-equiv='content-type' content='text/html;
charset=ISO-8859-1'><body marginwidth='0' marginheight='0'
topmargin='0' leftmargin='0'>\");\n";

// dit is mijn javascriptje --------------------------

echo "popup.document.write(\"<script
language=\"javascript\">\");\n";
echo "popup.document.write(\"function click()\");\n";
echo "popup.document.write(\"\{if (event.button>0)
\{self.close();}}\");\n";
echo
"popup.document.write(\"document.onmousedown=click\");\n";
echo "popup.document.write(\"</script>\");\n";



echo "popup.document.write(\"</body></html>\");\n";
echo "popup.document.close();\n";
echo "popup.focus();\n";

alvast bedankt voor jullie reacties

Groetjes,
Danny

Edwin Martin
07/12/05, 01:00
Danny schreef:

> Ziet iemand misschien mijn fout want ik snap het niet meer?!
> Dit is een stuk van mijn code waarin ik het javascriptje wil toevoegen

> echo "popup.document.write(\"<script
> language=\"javascript\">\");\n";

Als je gewoon de HTML-source bekijkt, dan zou je zien dat het niet klopt:

popup.document.write("<script language="javascript">");

Dit moet natuurlijk zijn:

popup.document.write("<script language=\"javascript\">");

De ' en " opnieuw escapen voor PHP en je krijgt:

echo "popup.document.write(\"<script language=\\\"javascript\\\">\");\n";

Edwin Martin

--
http://www.bitstorm.org/

Warden Dave
07/12/05, 01:00
"Danny" <xxxxtranice2you@hotmail.comxxx> wrote:

['PHP']
> // dit is mijn javascriptje --------------------------
>
> echo "popup.document.write(\"<script
> language=\"javascript\">\");\n";
> echo "popup.document.write(\"function click()\");\n";
> echo "popup.document.write(\"\{if (event.button>0)
> \{self.close();}}\");\n";
> echo
> "popup.document.write(\"document.onmousedown=click\");\n";
> echo "popup.document.write(\"</script>\");\n";
>
>
>
> echo "popup.document.write(\"</body></html>\");\n";
> echo "popup.document.close();\n";
> echo "popup.focus();\n";
>
> alvast bedankt voor jullie reacties

Danny, je schrijft een bericht waarin PHP wat JavaScript-script schrijft dat
wat markup/data schrijft. Waarom sla je niet gewoon een paar stappen over en
zet je de markup/data alvast in een document? Dat wat binnen dat document
variabel is kun je wel m.b.v. PHP+queryString/POST-data/etc. afhandelen,
aangezien je toch o.a. PHP tot je beschikking lijkt te hebben.

[Hoe ook, een click-event afhandelen mag het probleem niet zijn; gewoon o.a.
iets als 'document.onclick=function() {close()};' of ook een handler voor
click events die Window of BODY treffen. Een Window moet wel door
client-side script gecreeerd zijn (niet 'PHP', zoals je zei...dat kan n.l.
niet letterlijk) om in meer dan een handjevol browsers sluiten mogelijk te
maken.]

WD

Rene Pijlman
07/12/05, 01:00
Danny:
>ik blijf maar steeds een foutmelding krijgen.

Vertel.

--
René Pijlman

Wat wil jij worden? http://www.carrieretijger.nl

Danny
07/12/05, 01:45
On Wed, 07 Dec 2005 00:43:11 +0100, Edwin Martin
<e.j.martin@chello.nl> wrote:

>Danny schreef:
>
>> Ziet iemand misschien mijn fout want ik snap het niet meer?!
>> Dit is een stuk van mijn code waarin ik het javascriptje wil toevoegen
>
>> echo "popup.document.write(\"<script
>> language=\"javascript\">\");\n";
>
>Als je gewoon de HTML-source bekijkt, dan zou je zien dat het niet klopt:
>
>popup.document.write("<script language="javascript">");
>
>Dit moet natuurlijk zijn:
>
>popup.document.write("<script language=\"javascript\">");
>
>De ' en " opnieuw escapen voor PHP en je krijgt:
>
>echo "popup.document.write(\"<script language=\\\"javascript\\\">\");\n";
>
>Edwin Martin

Heej alvast bedankt voor je reactie...
Ik begrijp hieruit dat ik 2 keer moet escapen?

Is hier ergens documentatie over te vinden want ik heb wel een aantal
boeken hier liggen maar daar kan ik niet echt specifiek in terug
vinden hoe het escapen nou precies in zijn werk gaat.

Danny

Edwin Martin
07/12/05, 11:45
Danny schreef:

> Is hier ergens documentatie over te vinden want ik heb wel een aantal
> boeken hier liggen maar daar kan ik niet echt specifiek in terug
> vinden hoe het escapen nou precies in zijn werk gaat.

Hier:
http://www.php.net/manual/nl/language.types.string.php#language.types.string.sy ntax.double

Edwin Martin

--
http://www.bitstorm.org/

Rene Pijlman
07/12/05, 11:45
Danny:
>Ik begrijp hieruit dat ik 2 keer moet escapen?
>
>Is hier ergens documentatie over te vinden want ik heb wel een aantal
>boeken hier liggen maar daar kan ik niet echt specifiek in terug
>vinden hoe het escapen nou precies in zijn werk gaat.

Dat staat in alle basisteksten over PHP en Javascript. Boeken, online,
overal.

--
René Pijlman

Wat wil jij worden? http://www.carrieretijger.nl

test@test.test
07/12/05, 13:45
On Wed, 07 Dec 2005 11:33:18 +0100, Edwin Martin
<e.j.martin@chello.nl> wrote:

>Danny schreef:
>
>> Is hier ergens documentatie over te vinden want ik heb wel een aantal
>> boeken hier liggen maar daar kan ik niet echt specifiek in terug
>> vinden hoe het escapen nou precies in zijn werk gaat.
>
>Hier:
>http://www.php.net/manual/nl/language.types.string.php#language.types.string.sy ntax.double
>
>Edwin Martin

Grrrrrrr... het wil maar niet lukken
Ik krijg steeds het volgende in beeld:

"); popup.document.write(""); popup.document.write("");
popup.document.write(""); popup.document.close(); popup.focus(); }

Ik heb dus volgens mij ergens een escape niet goed gebruikt maar
waar?!

Dit is wat ik nu heb:

echo "popup.document.write(\"<html><head><title>\" +
name + \"</title><meta http-equiv='content-type' content='text/html;
charset=ISO-8859-1'><body marginwidth='0' marginheight='0'
topmargin='0' leftmargin='0'>\");\n";
echo "popup.document.write(\"<script
language=\\\"javascript\\\">\");\n";
echo "popup.document.write(\"function click()\");\n";
echo "popup.document.write(\"{if (event.button>0)
{self.close();}}\");\n";
echo
"popup.document.write(\"document.onmousedown=click\");\n";
echo "popup.document.write(\"</script>\");\n";

Moet ik nu overal nog een escape gebruiken?

Danny

Warden Dave
07/12/05, 14:00
<test@test.test> wrote:

> Dit is wat ik nu heb:
>
> echo "popup.document.write(\"<html><head><title>\" +
> name + \"</title><meta http-equiv='content-type' content='text/html;
> charset=ISO-8859-1'><body marginwidth='0' marginheight='0'
> topmargin='0' leftmargin='0'>\");\n";
> echo "popup.document.write(\"<script
> language=\\\"javascript\\\">\");\n";
> echo "popup.document.write(\"function click()\");\n";
> echo "popup.document.write(\"{if (event.button>0)
> {self.close();}}\");\n";
> echo
> "popup.document.write(\"document.onmousedown=click\");\n";
> echo "popup.document.write(\"</script>\");\n";
>
> Moet ik nu overal nog een escape gebruiken?

Danny, laat ik de vraag maar eens direct stellen: Waarom 'echo' je dit alles
in de richting van de client als je PHP script helemaal niets
nuttigs/extra's doet? Je maakt 't jezelf echt stukken lastiger dan nodig is.
(Ook is je functie 'click' zo niet nodig. Genoeg is +-, zoals gezegd
'document.onclick=function() {close()};')

Al;s je dingen als 'popup.document.write(""); popup.document.write("");'
ziet zal dat wellicht komen omdat de markup die ge-document.write wordt aan
interpretatie door de UA onderhevig is. ('Is natuurlijk wel afhankelijk van
waar je de 'echo's plaatst.)

WD

test@test.test
07/12/05, 15:00
On Wed, 7 Dec 2005 13:54:01 +0100, "Warden Dave"
>Danny, laat ik de vraag maar eens direct stellen: Waarom 'echo' je dit alles
>in de richting van de client als je PHP script helemaal niets
>nuttigs/extra's doet? Je maakt 't jezelf echt stukken lastiger dan nodig is.
>(Ook is je functie 'click' zo niet nodig. Genoeg is +-, zoals gezegd
>'document.onclick=function() {close()};')
>
>Al;s je dingen als 'popup.document.write(""); popup.document.write("");'
>ziet zal dat wellicht komen omdat de markup die ge-document.write wordt aan
>interpretatie door de UA onderhevig is. ('Is natuurlijk wel afhankelijk van
>waar je de 'echo's plaatst.)
>
>WD
>
Nou het php-script is een fotoalbum. Op een gegeven moment wil ik een
popup venster aanmaken vanuit dit script op een popup weer te geven
met hierin de foto. Dit werkt allemaal goed, De "normale" HTML code
handelt ie prima, maar zo gauw als ik <script></script> ga gebruiken
in mijn php-script geeft ie problemen.

Ik begrijp dat niet helemaal, normaal zou je toch gewoon d.m.v. 'echo'
de HTML code moeten kunnen aanmaken?!

Danny

test@test.test
07/12/05, 16:15
he he

eindelijk ben ik erachter wat het probleem nu was... blijkbaar maakt
het veel verschil of je " of ' gebruikt.
Dit is mijn nieuwe code die gelukkig werkt nu:

echo "popup.document.write(\"<script
language=\\\"javascript\\\">\");\n";
echo "popup.document.write('function click()');\n";
echo "popup.document.write('{if (event.button>0)
{self.close();}}');\n";
echo
"popup.document.write('document.onmousedown=click') ;\n";
echo "popup.document.write('<\/script>');\n";


Alvast harstikke bedankt voor je reacties !
Ben blij dat het nu wel functioneerd


Danny

Warden Dave
07/12/05, 16:45
<test@test.test> wrote:
> On Wed, 7 Dec 2005 13:54:01 +0100, "Warden Dave"

>>Danny, laat ik de vraag maar eens direct stellen: Waarom 'echo' je dit
>>alles in de richting van de client als je PHP script helemaal niets
>>nuttigs/extra's doet? Je maakt 't jezelf echt stukken lastiger dan nodig
>>is.
<knip>
> Nou het php-script is een fotoalbum. Op een gegeven moment wil ik een
> popup venster aanmaken vanuit dit script op een popup weer te geven
> met hierin de foto.
<knip>

Dat begrijp ik, maar aangezien je PHP script niet echt iets nuttigs doet kun
je 't JavaScript wellicht ook gewoon in een .js bestand plaatsen of toch
direct in het onderhavige document opnemen maar dan niet uitgeschreven
m.b.v. PHP. Dus:

// iets nuttigs...
// PHP 'end tag'
?>

<script type="text/javascript">
// je script ....
</script>

<?php
// doe echt iets in PHP

Het 2e dat ik opperde is dat je het document binnen de m.b.v. client-side
aangemaakte nieuwe window NIET gaat vullen m.b.v. document.write's, maar dat
je bij window.open(url, ...) al de url van een vrijwel kant & klaar document
opgeeft. Binnen dat document kun je dan wel weer dat wat steeds net anders
is, zoals de url van de kiek en de titel van de plaat ook m.b.v. PHP
invullen. Je bent dan ook niet geheel afhankelijk van client-side script, en
scriptlozen kunnen kiek & titel genieten. 1 Van de voordelen is dan ook dat
je niet -tig maal hoeft te gaan escapen...

WD

test@test.test
07/12/05, 18:00
On Wed, 7 Dec 2005 16:32:23 +0100, "Warden Dave"
<warden_dave@mnsys.invalid> wrote:


>Het 2e dat ik opperde is dat je het document binnen de m.b.v. client-side
>aangemaakte nieuwe window NIET gaat vullen m.b.v. document.write's, maar dat
>je bij window.open(url, ...) al de url van een vrijwel kant & klaar document
>opgeeft. Binnen dat document kun je dan wel weer dat wat steeds net anders
>is, zoals de url van de kiek en de titel van de plaat ook m.b.v. PHP
>invullen. Je bent dan ook niet geheel afhankelijk van client-side script, en
>scriptlozen kunnen kiek & titel genieten. 1 Van de voordelen is dan ook dat
>je niet -tig maal hoeft te gaan escapen...
>
>WD
>

Ja ik begrijp wat je bedoelt. Ik ben nog niet zolang bezig met php en
javascript. Ik heb altijd "gewoon" geprogrameerd met Visual Basic..
maar ben sinds korte tijd nu bezig met php en javascript.

Wat mij opvalt is dat als je alleen php of javascript gebruiken wil,
dit allemaal wel redelijk goed uitgelegd staat in boeken e.d.. Maar
wanneer men een combinatie van beiden gaat gebruiken, je toch tegen
dingen aanloopt welke ik nu (nog) niet snel kan oplossen.

Maar ja aldoende leert men zeggen ze he.

Hartelijk dank voor je reacties, ben er weer een stuk wijzer door
geworden.

Groeten,
Danny