[javascript] cross-window script wel in Firefox, niet in IE

Pagina: 1
Acties:

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Ik heb een agenda-systeem in beheer, waarbij per agenda-item er een locatie moet worden aangegeven. Die locaties staan apart in de database. Om nu het toevoegen van een nieuw item op een nog niet eerder ingevoerde database zo eenvoudig mogelijk te maken, heb ik een systeem met een pop-up window bedacht.

In Firefox werkt alles prima, in IE krijg ik steeds "object wordt verwacht" foutmeldingen. Ziet iemand waar het fout gaat??

Op de hoofdpagina staat:
HTML:
1
<A HREF="#" onclick="popUp('popup_locaties.php');">Voeg nieuwe locatie toe</A>


In het bestand popup_locaties.php staat in het deel van de code dat een nieuwe locatie daadwerkelijk toevoegt aan de database het volgende:

In de header
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript" language="javascript">
<!--
function uitbreiden) { 
var aantal = opener.document.forms['agenda'].LocatieID.options.length;
var omschrijving = '".$_POST['Naam']."';\n
<?php
echo "var id = '".mysql_insert_id()."';\n";
?>
opener.document.forms['agenda'].LocatieID.options[aantal] = new Option(omschrijving,id);
opener.document.forms['agenda'].LocatieID.selectedIndex = aantal;
setTimeout('self.close();',1);
}
//-->
</script>


En dan in de body
JavaScript:
1
<body onLoad='uitbreiden();'>


Het idee is dus dat het item LocatieID in de form met de naam agenda wordt uitgebreid zodra een item is toegevoegd, zodat de gebruiker ineens door kan.

Waar gaat het mis en vooral: waarom wel in Firefox (die toch vaak strenger is) en niet in IE?

  • Domokoen
  • Registratie: Januari 2003
  • Laatst online: 14:41
JavaScript:
1
2
3
<script type="text/javascript" language="javascript">
<!--
function uitbreiden) { 


Misschien is dit een Javascript syntax error (regel 3)?

[ Voor 20% gewijzigd door Domokoen op 02-07-2006 00:19 ]


  • amoen
  • Registratie: Juni 2003
  • Laatst online: 18-11-2025
hey,
ik heb vrijdag ook iets dergelijks gehad. waarbij FireFox het juist niet deed, maar IE weer wel.

kijk even, misschien dat het helpt:
http://gathering.tweakers.net/forum/list_messages/1144090

heeeeee ..... hoe is het?


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

JavaScript:
3
4
5
function uitbreiden) { 
var aantal = opener.document.forms['agenda'].LocatieID.options.length;
var omschrijving = '".$_POST['Naam']."';\n 


JavaScript:
3
4
5
function uitbreiden() { 
var aantal = opener.document.forms['agenda'].LocatieID.options.length;
var omschrijving = '<?php print $_POST['Naam'];?>';

[ Voor 14% gewijzigd door Snake op 02-07-2006 00:27 ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:49

crisp

Devver

Pixelated

In IE kan je vanuit een popup niet direct een select-element in de opener aanspreken.
Oplossing: roep een functie aan in de opener die vervolgens de select aanspreekt :)

Intentionally left blank


  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
snake903 schreef op zondag 02 juli 2006 @ 00:27:
JavaScript:
3
4
5
function uitbreiden) { 
var aantal = opener.document.forms['agenda'].LocatieID.options.length;
var omschrijving = '".$_POST['Naam']."';\n 


JavaScript:
3
4
5
function uitbreiden() { 
var aantal = opener.document.forms['agenda'].LocatieID.options.length;
var omschrijving = '<?php print $_POST['Naam'];?>';
Je hebt wel gelijk, maar dit komt omdat ik hier even alle 'echo-commado's van PHP weg heb gehaald. Dus dit is even een slordigheidje bij mijn voorbeeld van de code, in werkelijkheid staat er dit:

PHP:
1
echo "var omschrijving = '".$_POST['Naam']."';\n";

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Mr.Chinchilla schreef op zondag 02 juli 2006 @ 00:19:
JavaScript:
1
2
3
<script type="text/javascript" language="javascript">
<!--
function uitbreiden) { 


Misschien is dit een Javascript syntax error (regel 3)?
Heh, scherp gezien, thanx. Maar... het los het probleem niet op. Nog steeds wordt op de regel waar <body onload=..... staat een object verwacht door IE.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:49

crisp

Devver

Pixelated

crisp schreef op zondag 02 juli 2006 @ 00:36:
In IE kan je vanuit een popup niet direct een select-element in de opener aanspreken.
Oplossing: roep een functie aan in de opener die vervolgens de select aanspreekt :)
Moet ik mezelf dan echt quoten?

Intentionally left blank


  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
crisp schreef op zondag 02 juli 2006 @ 00:36:
In IE kan je vanuit een popup niet direct een select-element in de opener aanspreken.
Oplossing: roep een functie aan in de opener die vervolgens de select aanspreekt :)
Ik heb nu als test even in de main page dit toegevoegd:
JavaScript:
1
2
3
4
5
6
<script>
function select_uitbreiden (naam, omschrijving) {
    document.write naam;
    document.write omschrijving;
}
</script>


En dan in de pop-up:
JavaScript:
1
window.opener.select_uitbreiden('sdffd','dasfsdf');


Dat geeft echter nog problemen. Nu krijg ik als melding "Deze eigenschap of methode wordt niet ondersteund door dit object"

Enige verdere tips??

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
crisp schreef op zondag 02 juli 2006 @ 01:19:
[...]

Moet ik mezelf dan echt quoten?
Oh nee, ik ben er wel mee aan het experimenteren (zie andere reactie). Iedere feedback wordt zeer op prijs gesteld.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:49

crisp

Devver

Pixelated

write is een method en ontvangt z'n arguments dus binnen brackets:
JavaScript:
1
document.write('foo');

Intentionally left blank


  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Crips, je bent geweldig! :)

Even ter documentatie voor iedereen die hier ook tegenaan loopt. Ik heb het nu zo opgelost:

In de pagina met de link naar het pop-up venster staat nu tussen <head>...en...</head>:
JavaScript:
1
2
3
4
function select_uitbreiden (aantal,id,omschrijving) {
    document.forms['agenda'].LocatieID.options[aantal] = new Option(omschrijving,id);
    document.forms['agenda'].LocatieID.selectedIndex = aantal;
}


In het pop-up window staat vervolgens dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    <?php
    echo "function uitbreiden() {\n";
    echo "var aantal = opener.document.forms['agenda'].LocatieID.options.length;\n";
    echo "var omschrijving = '".$_POST['Naam']."';\n";
    echo "var id = '".mysql_insert_id()."';\n";
    echo "opener.select_uitbreiden(aantal,id,omschrijving);";
    echo "setTimeout('self.close();',1);\n";

    echo " }\n";
    echo "\n</script>\n</head>\n";
        
    ?>
    <body onLoad="uitbreiden()">

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:49

crisp

Devver

Pixelated

Ik vraag me af waarom je daar een popup voor nodig hebt...

Intentionally left blank


  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
crisp schreef op zondag 02 juli 2006 @ 01:44:
Ik vraag me af waarom je daar een popup voor nodig hebt...
Ik heb overwogen om met het klikken op de link "Voeg nieuwe locatie toe" het huidige form te submitten, de gebruiker dan door te sturen naar een pagina met de optie om nieuwe locatie toe te voegen, om vervolgens daarna de gebruiker weer naar de pagina waar aan gewerkt werd terug te sturen. Met een pop-up werkt veel sneller, zeker in aanmerking genomen dat het door leken gebruikt moet worden.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:49

crisp

Devver

Pixelated

Ik zou eerder zoiets verwachten:

Selecteer een locatie: <select>
of voer een nieuwe locatie in: <input>
<submit>

Intentionally left blank

Pagina: 1