Witam. Mam soft,który ma komponent TWebBrowser. Exe skompilowany od jakiegoś czasu i działał. Od mniej więcej środy zdaje się albo wtorku (2015-02-17), przestał działać. Przy próbie wykonania tego samego skryptu co wcześniej zaczął pokazywać błąd. Skrypt nie zmieniony, exe nie zmieniony. Nie wiem co jest grane. Chodzi o geotagowanie Google (gogle maps).
Mało tego, jak odpalę ten skrypt w przeglądarce IE czy FireFox działającej samodzielnie (nie w moim exe jako TBrowser) to jak działało to i dalej działa. Problem zaczął się pojawiać tylko w TWebBrowser.
Komunikat z błędem jest taki: Nie można odczytać właściwości: display. Nieprawidłowy argument.
Wiem nawet na jakiej metodzie się wywala, na wywołaniu "map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);"
Oczywiście jak wspomniałem już, to samo jak odpalę "normalnie" czyli nie z exe tylko z przeglądarki to działa. Co dziwne na starych XP to dalej działa. Na Win8 działało i przestało przedwczoraj. Co jest ?
Skrypt jest taki np.:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta http-equiv="Content-Language" content="pl">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Geocoding service</title>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
#panel {
position: absolute;
top: 5px;
left: 20%;
margin-left: 0px;
z-index: 5;
background-color: #fff;
padding: 5px;
border: 1px solid #999;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var geocoder;
var map;
var markersArray = [];
var infowindow = new google.maps.InfoWindow();
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(52.173931692568, 18.8525390625);
var mapOptions = {
zoom: 8,
center: latlng
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
codeAddress();
}
// Czyszczenie wszystkich markerów na mapie
function clearOverlays() {
for (var i = 0; i < markersArray.length; i++ ) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
//Rozkodowanie adresu na lokalizację i ustawienie markera na pozycji
function codeAddress() {
var address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
clearOverlays();
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
markersArray.push(marker);
map.setZoom(19);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
function codeLatLng() {
var input = document.getElementById('latlng').value;
var latlngStr = input.split(',', 2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setCenter(latlng);
var marker = new google.maps.Marker({
map: map,
position: latlng
});
map.setZoom(19);
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
document.getElementById('address').value = results[1].formatted_address;
} else {
alert('No results found');
}
} else {
alert('Geocoder failed due to: ' + status);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="panel">
<input id="address" name="address" size="70" type="textbox" value="Warszawa, ul. Akademicka 5">
<input type="button" value="Ustaw po adresie" onclick="codeAddress()">
<br>
<input id="latlng" size="30" type="textbox" value="">
<input type="button" value="Ustaw po GPS" onclick="codeLatLng()">
</div>
<div id="map-canvas"></div>
</body>
</html>