Ebbe a problémába én is belefutottam. Nem volt könnyű rájönni a megoldásra.
Én akkor nem írtam le, de más megtette: http://bit.ly/3JF5dp
Még jól jöhet.
Szakmai és kevésbé szakmai bejegyzések webes térképekről, szoftverfejlesztésről, térinformatikáról meg csak úgy...
Ebbe a problémába én is belefutottam. Nem volt könnyű rájönni a megoldásra.
Én akkor nem írtam le, de más megtette: http://bit.ly/3JF5dp
Még jól jöhet.
A fejlesztői és a végfelhasználói környezet különbsége sok esetben okozott már fejtörést. Nálunk most éppen a futótérkép fejlesztése körül jelentkezett egy probléma az ASP.NET routing szolgáltatása kapcsán. Konkrétan a fejlesztői gép egy XP míg az alkalmazás valami újabb (esetünkben 2008 server). A routingot pedig használni kell, mert mennyivel jobban néz ki (meg persze SEO frendlibb) egy olyan path, hogy http://www.futoterkep.hu/utvonalak/ mint az, hogy http://www.futoterkep.hu/Modules/TrackList/tr_list.aspx. Igen ám, de az XP Pron az 5.1-es IIS erre az első aszinkron postback után egy 405-ös hibával köp szembe. Ez szerinte annyit jelent, hogy a postot a dev/null-ba küldted és nincs aki válaszoljon túlnan. Hosszas guglizás után sikerült kideríteni (már a hibaüzenet pontos jelentését sem könnyű), hogy a probléma az, hogy a borítékról lemaradt a címzés, így szegény postás vinné, de nem tudja, hogy hová. A HTTP világban ez annyit tesz, hogy a FORM tag action paramétere nem töltődik ki automatikusan és szegény IIS keresné azt a lapot, ahová a kérést küldjük, ami alapértelmezetten a _self vagyis saját maga. Igen ám, de a routinggal megtámogatott oldal esetén ez a lap fizikailag nem létezik, szegény IIS pedig buta és nem tudja megtalálni.
Mi hát a megoldás? Természetesen meg kell címezni a borítékot:
this.form1.Action = this.Request.RawUrl;
Ezután már tudja a postás hová kell vinni és Náncsi néni boldogan nézegeti mekkorát nőttek az unokák.
Persze a dologra rájönni korántsem volt annyira egyszerű, mint ahogy látszik. Remélem van akinek megspóroltam most néhány órányi google túrást…
System.Net.WebClient objWebClient = new System.Net.WebClient();
objWebClient.DownloadFile(URL, FILENAME);
System.Drawing.Image imgPhoto = System.Drawing.Image.FromFile(FILENAME);
bounds.containsLatLng(center)
map.setUIToDefault();
var map;
var center = new GLatLng(47.173378, 19.539185);
$(document).ready(function()
{
if (GBrowserIsCompatible())
{
map = new GMap2($("#GoogleMap_Div")[0]);
map.setUIToDefault();
map.setCenter(center, 10);
GEvent.addListener(map, "moveend", checkIsInView);
var myMarker = new GMarker(center);
map.addOverlay(myMarker);
checkIsInView();
}
});
function checkIsInView()
{
var bounds = map.getBounds();
var message = ";
if (bounds.containsLatLng(center))
{
message += "green;\">Benne van";
}
else
{
message += "red;\">Nincs benne";
}
message += "";
$("#message")[0].innerHTML = message;
}
http://soci.hu/blog/index.php/category/szakmai-elet/optimalizalas/
Kézzelfoghatóan, például az ország közepének keresésekor (http://maps.google.com/maps/geo?output=jsonl&oe=utf-8&q=Pusztavacs,%20Hungary) a visszaadott JSON tartalmaz egy ExtendedData tagot, amelyben megtaláljuk a befoglalót:
{
"name": "Pusztavacs, Hungary",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "Pusztavacs, Hungary",
"AddressDetails": {"Country": {"CountryNameCode": "HU","CountryName": "Hungary","AdministrativeArea": {"AdministrativeAreaName": "Pest","Locality": {"LocalityName": "Pusztavacs"}}},"Accuracy": 4},
"ExtendedData": {
"LatLonBox": {
"north": 47.2079051,
"south": 47.1073380,
"east": 19.6032050,
"west": 19.4464160
}
},
"Point": {
"coordinates": [ 19.5010859, 47.1712960, 0 ]
}
} ]
}
Nemrég szükségem volt rá, hogy egy bizonyos javascriptet úgy futtassak le egy usercontrolokat bőven tartalmazó MS-AJAXos ASPX oldalon, hogy MINDENKÉPPEN ő legyen a legutolsó.
Teljesen függetlenül attól, hogy esetleg itt-ott RegisterStartupScript metódusok vagy bármi egyéb megoldások az oldal részeiben most vagy később garázdálkodnak-e, én azt szeretném, ha nem borítanák meg a rendet.
Hosszas guglizás és kísérletezés után találtam egy többé-kevésbé kielégítő megoldást.
Azért csak többé-kevésbé, mert IE és FF esetében az elvárt módon működik, de sajnos opera alatt nem (mást meg sem mertem próbálni :)).
A kulcs az alábbi függvény:
function AddOnload(myfunc)
{if (window.addEventListener)
window.addEventListener('load', myfunc, false);
else if (window.attachEvent)
window.attachEvent('onload', myfunc);
}
Ami ugye (kompatibilitási okokból kétféleképpen) feliratkozik az oldal onload eseményére.
Ezt próbáltam különböző módokon meghívni, hogy a kívánt eredményt kapjam.
Az első változat így nézett ki:
<html><head><script type="text/javascript">
function mymessage()
{alert("onload event");
}
...
...
alert('inline');
AddOnload(function() { alert('TheLastOne'); });
</script></head><body onload="mymessage()">
... ...
</body></html>
IE-re már jó is volt. Először megjelent az inline kód, utána az online attribútumban megadott végül pedig az ominózus utolsó. FF esetében már sajnos nem ez volt a sorrend. Ott gyakorlatilag inline
függvényhívásként működött a dolog, szerintem helytelenül. Azután eltoltam a feliratkozást az oldal végére, ez a FireFoxot is rávezette arra, hogy mit is akarok tulajdonképpen. Mint említettem Operában továbbra sem jó ez a megoldás, de több időt nem szántam rá.
Őszintén szólva az IE és a FF a 99.9%-át lefedi felhasználóknak, tehát ennyiben hagytam a dolgot.
1 <html>
2 <head>
3 <script type="text/javascript">
4 function mymessage()
5 {6 alert("onload event");
7 } 8 9 function AddOnload(myfunc)
10 {11 if (window.addEventListener)
12 window.addEventListener('load', myfunc, false);
13 else if (window.attachEvent)
14 window.attachEvent('onload', myfunc);
15 }16 </script>
17 18 </head>
19 <body onload="mymessage()">
20 ... 21 ...22 </body>
23 24 <script>
25 alert('inline');
26 AddOnload(function() { alert('TheLastOne'); });
27 </script>
28 </html>
Elég érdekes, hogy melyik böngésző hogyan értelmezte az utasítást.
A fenti kód lett a végső változat, amely FF és IE esetében egyformán utolsónak hívja a kívánt scriptet.

Ez a tipp hasznos lehet TC és WinMerge fanoknak.
A dolog meglehetősen egyszerű. Fogd a wincmd.ini fájlt és írd be a konfigurációs szekcióba a következőt:
Comparetool=C:\program files\winmerge\WinMerge.exe
<table class="tab_top_decor">
<tbody>
<tr>
<td class="tab_top_decor_selected">
</td>
<td>
</td>
</tr>
</tbody>
</table>
<div style="background-color: #FF0000; height: 1px"></div>
<div style="background-color: #FF0000; height: 1px; font-size: 1px"></div>
<div style="background-color: #FF0000; height: 1px;overflow: hidden"></div>
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mailpickup"/>
</smtp>
</mailSettings>
</system.net>
[Test]
public void SendMailTest()
{
SmtpClient smtpclt = new SmtpClient();
MailMessage message = new MailMessage("from@server.com", "to@server.com");
message.Body = "Body";
message.Subject = "subject";
smtpclt.Send(message);
}
smtpclt.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtpclt.PickupDirectoryLocation = "c:\\temp\\mailpickup";
<script src="jquery-1.2.6.js" type="text/javascript"/>
<% if (false) { %> <script src="jquery-1.2.6-vsdoc.js" type="text/javascript"/>
<% } %>
System.Drawing.Drawing2D
System.Web.UI.WebControls
System.Drawing.Drawing2D.Image im = new System.Drawing.Drawing2D.Image();Ilyen esetekben hasznos lehet a névterekre illeszthető alias, amit az alábbi módon használhatunk:
using Draw = System.Drawing.Drawing2D;
Draw.Image im = new Draw.Image();