[HTML/PHP/JS] Cross-window scripting, hoe een div vullen?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Omdat mijn vorige topic gesloten werd, nog een keer mijn probleem.. dit keer met code wat ik zelf in elkaar gezet heb maar wat allemaal niet mag helpen...

Ik heb een popup geopend met de volgende code:

debugwindow = window.open("debug.php", "debugwindow", "width=900,height=700,scrollbars=yes,toolbar=no,location=no,directorie=no");
debugwindow.focus();

Nu heb ik in debug.php het volgende staan:
<div id="debugline" name="debugline"></div>

Nu wil ik via de opener (de mainwindow) die div in het popupvenster openen... ik krijg dit dus niet voor elkaar.

Wat ik geprobeerd heb:
debugwindow.getElementById("debugline").value = "Test";
debugwindow.window.getElementById("debugline").value = "Test";
window.getElementById("debugline").value = "Test");

Ik krijg het wel voor elkaar om debugwindow.writeln("Test"); te doen maar dan moet ik de hele popup steeds opnieuw gaan schrijven...

Uiteindelijk is het namelijk de bedoeling dat ik de tekst uit de div haal, vervolgens bovenin tekst bijplak en weer terug in die div stopt.. zo wil ik realtime debug informatie kunnen tonen van de mainwindow in de popup...

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 01:40

orf

Een div heeft geen value. Je kunt eens testen met innerHTML.

Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

.innerHTML van het element misschien?

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 18-09 20:25

TeeDee

CQB 241

En je kon hier echt niets mee vinden? Geen hints, tricks of wat dan ook?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Terw_Dan schreef op vrijdag 25 april 2008 @ 13:33:
.innerHTML van het element misschien?
Lijkt wel de goede functie maar ik kan deze niet aanroepen omdat ik niet weet hoe ik de popup moet aanroepen...

Als ik bijvoorbeeld dit doe:
debugwindow.window.getElementById("testdiv").innerHTML = "Blaat"; of:
window.getElementById("testdiv").innerHTML = "Blaat"; of:
debugwindow.getElementById("testdiv").innerHTML = "Blaat";

Dan blijf ik de volgende error krijgen in firebug: debugwindow.window.getElementById is not a function

Ik begrijp de logica wel maar krijg het niet voor elkaar de popup vanuit de opener te vinden...

Heb de afgelopen dagen google platgezocht maar ik vind alleen hoe het andersom kan, de popup naar de opener... dat is juist dus niet de bedoeling...

Acties:
  • 0 Henk 'm!

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 17-09 21:58

BHR

debugwindow.document.getElementById("debugline").innerHTML = "Test";

No amount of key presses will shut off the Random Bug Generator


Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

debugwindow.window.getElementById is ook geen functie, dat gaat niet werken (tenzij je natuurlijk een functie hebt geschreven die zo heet).
document.getElementById('testdiv') is wat je moet hebben.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BHR schreef op zaterdag 26 april 2008 @ 10:22:
debugwindow.document.getElementById("debugline").innerHTML = "Test";
dan krijg ik deze melding:
debugwindow.document.getElementById("testdiv") has no properties

misschien even handig mijn broncode te vermelden van debug.php die ik open:
<?php require("../../config.php"); ?>
<?php include("../header.php"); ?>

<table style="width: 100%; background-color: #5282CE;">
<tr>
<td><b>Debug window for <?php echo $title; ?></b></td>
</tr>
</table>
<table style="width: 100%;">
<tr>
<td><span name="debugline" id="debugline"><?php echo $site_title; ?></span></td>
</tr>

</table>
<div id="testdiv" name="testdiv"></div>

<?php include("../footer.php"); ?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Terw_Dan schreef op zaterdag 26 april 2008 @ 10:24:
debugwindow.window.getElementById is ook geen functie, dat gaat niet werken (tenzij je natuurlijk een functie hebt geschreven die zo heet).
document.getElementById('testdiv') is wat je moet hebben.
Deze functie kan ik natuurlijk niet uitvoeren vanaf de mainwindow (de opener), hij zou wel werken maar dan direct vanuit de popup wat niet de bedoeling is...

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Schrijf een javascript functie in je popup window waarmee je de div aan kan passen, bijvoorbeeld:

JavaScript:
1
2
3
fillElement(elementId, str) {
  document.getElementById(elementId).innerHTML = str;
}


Deze kan je dan aanroepen vanuit je parentwindow:
JavaScript:
1
debugwindow.fillElement('someId', 'someString');

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor je hulp maar ook dit werkt helaas niet...

Ik krijg de volgende melding:
debugwindow.write_debug is not a function

De volgende code heb ik nu gebruikt (dit staat in functions.js) die ik in zowel de mainwindow als de popup open...

code:
1
2
3
4
5
6
7
8
9
10
11
12
function open_debug_window(url) {
  debugwindow = window.open("debug.php", "debugwindow", "width=900,height=700,scrollbars=yes,toolbar=no,location=no,directorie=no");
  if (window.focus) 
  {
    debugwindow.focus();
  }
  debugwindow.write_debug("testdiv", 'Tesst');
}

function write_debug(elementId, str) { 
  document.getElementById(elementId).innerHTML = str; 
}

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Dit komt waarschijnlijk omdat je pagina/ script nog niet helemaal is ingeladen in je popup window op het moment dat je write_debug aanroept. Je zou dit pas uit moeten voeren onload (of eigenlijk DOMContentLoaded) van je popup window. Dit kan je weer bereiken door in je popup window een functie aan te roepen in je parent. En dan kan je volgens mij ook gewoon het volgende doen:

popup window:
JavaScript:
1
2
var parent = window.opener;
window.onload = function() { parent.popupLoaded(window); };


parent:
JavaScript:
1
2
3
4
5
function popupLoaded(popupWindow) {
  popupWindow.document.getElementById('test').innerHTML = 'test';
  // als dit niet werkt kan je misschien toch je eigen functie aanroepen:
  // popupWindow.write_debug('test', 'test');
}

[ Voor 3% gewijzigd door Borizz op 26-04-2008 15:04 ]

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt dit werkt, kan ik weer even verder want ik ben er nog lang niet maar dit schiet me wel aardig op :D
Pagina: 1