Javascript niet uitgevoerd in write HTML

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Xymox
  • Registratie: Februari 2002
  • Laatst online: 09-09 13:19

Xymox

Determinism rulez !

Topicstarter
Ik ben bezig met Google maps om deze binnen een client applicatie te gebruiken (VB6).
(ik maak gebruik van de MS WebBrowser control voor weergave)

Ik gebruik de "hello world" sample van Google zelf en het betreft deze HTML code:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  function initialize() {
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  }
</script>
</head>
<body onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>


Als ik bovenstaande HTML in een lokaal bestand heb staan (bv c:\\GoogleTest.html) en dit inlees met de Navigate method van de WebBrowser control:

code:
1
WebBrowser1.Navigate( "file:///C:/GoogleTest.html", .....


dan krijg ik keurig een Google Map te zien.

Echter wil ik de HTML code niet in een file hebben staan, maar binnen de applicatie.
Dus heb ik geprobeerd de HTML code te zetten in het webbrowser document.

code:
1
2
3
4
5
! Eerst empty pagina openen
WebBrowser1.Navigate( "about:blank", .....

! Document ophalen van WebBrowser en...
doc.body.innerHTML = <HIER GOOGLE SCRIPT>


Ik probeer dus dezelfde HTML code mbv innerHTML in het document te zetten.
Echter zie ik dus niets !

Ik heb gezocht en meerdere andere oplossingen getest, zoals

- HTML tags wel/niet in HTML code opnemen
- De DEFER switch gebruikt bij <SCRIPT>
- De write method van het document gebruikt

geen enkele optie werkt.

Als ik kijk naar de bronpagina na uitvoeren van het zetten van de HTML code mbv innerHTML method dan zie ik dit:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  function initialize() {
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  }

</script>
</head>
<body>
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html><script src="http://maps.gstatic.com/intl/nl_ALL/mapfiles/api-3/22a/main.js" type="text/javascript"></script>


Dus achter de tag einde HTML zie ik een script regel staan.
Lijkt me niet correct.

Kan iemand mij uit mijn lijden verlossen en een juiste methode aangeven hoe ik JavaScript kan laten uitvoeren waarbij de HTML code programmatisch in de webbrowser wordt gezet?

/EDIT
Om te testen dat het zetten van HTML überhaupt wel werkt heb ik in tevens dit stukje bij de HTML code geplaatst:

HTML:
1
<H1>foo</H1>


En de tekst foo wordt dan keurig in de browser weergegeven, maar de Google map niet.
Dit is voor mij een indicatie dat de methode van zetten van HTML code wel correct is, maar dat het Javascript gedeelte niet (correct) wordt uitgevoerd.

[ Voor 6% gewijzigd door Xymox op 30-11-2009 08:58 ]

Intel i9-9900K | MSI MPG Z390 Gaming Pro Carbon | MSI RTX 2080Ti Gaming X Trio | Ballistix Sport LT (32GB) | MSI Optix MAG274QRF-QD 1440p | Samsung 970 EVO Plus (2TB) | NZXT Kraken X52 | Valve Index | Fractal Design R6 | Synology DS420j


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
De JavaScript code wordt aangeroepen middels een onload op de body. Met je tweede manier is de pagina al geladen en ga je deze achteraf manipuleren. De onload zal dus nooit worden aangeroepen, want de load is al geweest.

Acties:
  • 0 Henk 'm!

  • Xymox
  • Registratie: Februari 2002
  • Laatst online: 09-09 13:19

Xymox

Determinism rulez !

Topicstarter
Ok, dat lijkt me dan logisch.

Hoe kan ik dit dan werkend krijgen?
Dus eigenlijk achteraf het JavaScript gedeelte uitvoeren.

Als ik het stuk
HTML:
1
<body onload="initialize()">


omzet naar <body>

en na het zetten van de HTML code dit uitvoer :

code:
1
ParentWindow.execScript( 'initialize( )', 'JavaScript' )


dan nog steeds geen resultaat (ook geen foutmelding)

Ik voermoed dat het stuk HTML code iets anders opgezet moet worden, maar ik heb geen idee hoe.

Intel i9-9900K | MSI MPG Z390 Gaming Pro Carbon | MSI RTX 2080Ti Gaming X Trio | Ballistix Sport LT (32GB) | MSI Optix MAG274QRF-QD 1440p | Samsung 970 EVO Plus (2TB) | NZXT Kraken X52 | Valve Index | Fractal Design R6 | Synology DS420j