[JS] Text schrijven naar ander frame..

Pagina: 1
Acties:

  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 17-08 16:09
Ik ben eens aan het prutsen gegaan mt Javascript, dit omdat de load voor ee webserver kan vrlagen, en het er ook fancieren uit kan laten zien (of juist weer niet :/).

Ik heb een website gemaakt met een index.php waar een iframe inzit die linkt naar main.php.
in index.php staat het volgende:
code:
1
2
3
4
5
6
7
8
<script language="JavaScript">
if (sysmsg) { 
  document.write(" &nbsp; <b>call:</b>  "+sysmsg) 
} 
else { 
  document.write("<br />") 
}
</script>


en in main.php:
code:
1
2
3
4
5
6
7
<script language="JavaScipt">
function callmessage(msg) {
    window.parent.sysmsg = msg; 
}
</script>

<body onLoad="callmessage('een geweldig bericht')">


Noe moet dus 'een geweldig bericht' in index.php komen te staan...
Maar hij geeft geen error, maar het werkt niet..

Ik kan dit wel doen met een inputbox, dat lukt me, maar dat wil ik dus nou net weer niet :/

[ Voor 46% gewijzigd door Bender op 12-03-2003 23:29 ]


Verwijderd

Het lijkt me dat het stuk javascript in je parentwindow al geladen is op het moment dat de javascript in je iframe wordt uitgevoerd.
Probeer eens met een button in je hoofdframe: button onclick="alert(sysmsg)"
Als je dan wel het bericht krijgt, dan moet je dus een timeout of zo gaan uitvoeren op die functie, of gaan luisteren naar het onload event van die iframe en daar die functie in de parentwindow gaan uitvoeren.
Hoe je daar de server-load trouwens mee verlaagt is mij eigenlijk niet helemaal duidelijk.

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 09:42

RM-rf

1 2 3 4 5 7 6 8 9

Triloxigen schreef op 12 March 2003 @ 23:28:
Ik ben eens aan het prutsen gegaan mt Javascript, dit omdat de load voor ee webserver kan vrlagen
in dat geval kan het helpen je eens te verdiepen in de taal, denk vooral eens na over hoe dat van idee 'dynamische toevoegen en verwijderen van elementen' op een pagina werkt.

daarvoor zal je je moeten verdiepen in een nieuwe wereld, die object georienteerd programmeren heet, iets dat je bij php nou niet bepaald leert.

essentieel is dat je zo weinig mogelijk met document.write() zou moeten willen werken, dat is domweg plat het renderen van een pagina simuleren zoals, zo'n eenweg-engine als php doet.
je zal begrip moeten kweken voor objecten, methods en properties

wat je wil doen is dynamisch de inhoud van een bestaan element in een pagina aanpassen.
javascript biedt je via DOM daarom de methode om eerst een object in de pagina te localiseren
code:
1
2
3
<div id="elementje">&nbsp;</div>
...
document.getElementById('elementje')

van dit object kun je verschillende properties aanspreken, voor de inhoud heb je de keus qua content van het element tussen innerHTML danwel innerText (de eerste bied je de mogelijkheid om eenvoudige markup te adden, zoals <b> <i>, <table> e.d., enkel wordt deze niet 'echt' gerenderd; daarvoor hebben we de createElement()-method).

jouw probleem is op te lossen door
code:
1
parent.frames['main'].document.getElementById('element').innerHTML = msg
te doen, waarbij 'element' de naam is van een HTML-element in die pagina

[ Voor 5% gewijzigd door RM-rf op 13-03-2003 00:26 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Och ja, ik was aan het slapen (of zou het moeten doen). Document.write kun je niet in een functie stoppen; niet op veel zinvolle manieren iig.
Volgens mij begint document.write steeds meer evil te worden.
Enfin, RM-rf heeft je al aardig op weg geholpen. innerText niet gebruiken hoor, wordt volgens mij (nog) niet ondersteund door alle browsers.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 23-08 15:12

alienfruit

the alien you never expected

RM-RF volgens mij wordt innerHTML niet door elke browser ondersteunt; wat je misschien zou kunnen doen is; een een textbook formulier maken en daar de tekst in veranderen en/of plaatsen en dat als bron gebruiken voor de tekst. Hoef je alleen maar het formulier te hide-en.

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 09:42

RM-rf

1 2 3 4 5 7 6 8 9

alienfruit schreef op 13 March 2003 @ 12:45:
RM-RF volgens mij wordt innerHTML niet door elke browser ondersteunt; wat je misschien zou kunnen doen is; een een textbook formulier maken en daar de tekst in veranderen en/of plaatsen en dat als bron gebruiken voor de tekst. Hoef je alleen maar het formulier te hide-en.
innerHTML wordt niet door netscape4x ondersteund, wil je crossbrowser werken kan je daar met een document.layers['element'].document.write(msg); document.layers['element'].document.close() werken.
(daarvoor moet de DIV wel een LAYER-type zijn, dat bereik je door via css of style position te definieren)

verder is innerText idd geen onderdeel van DOM, maar enkel mozilla 1.2 ondersteund het niet (van moz1.3 ben ik niet zeker).
innerText zou eigenlijk nodeValue moeten zijn (eigenlijk innerHTML ook, beiden zijn een MS-extensie op de DOM, waarbij innerHTML toegevoegd is wegens de wensen van HTML-bouwers)

een goede pagina hierover (waar ik me op baseer):
http://www.xs4all.nl/~ppk/js/version5.html
http://www.xs4all.nl/~ppk/js/innerhtml.html
alienfruit schreef op 13 March 2003 @ 12:45:
wat je misschien zou kunnen doen is; een een textbook formulier maken en daar de tekst in veranderen en/of plaatsen en dat als bron gebruiken voor de tekst. Hoef je alleen maar het formulier te hide-en.
dat wilde de user nou expliciet niet;
alhoewel er idd met CSS er de mogelijkheid is de border te verwijderen en background e.d. en text te stylen; enkel de overflow naar auto zetten lukt niet.
de shorthand border-propertie in Netscape heeft wel een vervelende bug, waardoor de oplossing als alternatief voor innerHTML minder geslaagd is

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Verwijderd

Bijna vergeten: op webfx staat een ie-emulator voor Mozilla artikel:
http://webfx.eae.net/dhtml/ieemu/htmlmodel.html
Daar staat die innerText ook bij.
Het blijft toch een Microsoft-uitvinding, dus oppassen geblazen.
Pagina: 1