AdSense is placed in iframe on webpage by adsenes's javascript. This fact has given me an idea to put adsense in my own iframe where i can define my own keywords, the result - ads will differ from top page content!! Cool - keyword hack! But adsense script checks for 'window.top' and if true - script will show adsense according to top page content.
The trick is to set window.top=window.self
before adsense script (may not work in some IE, because MSIE doesn't allow javascript to rewrite «window» - DOM object).
I know nights are for passion,
Birght sunny days are for wars
And heroes killed in action.
Google AdSense keywords hack
OpenLayers and Yandex.Maps (Яндекс.Карты)
FIXED version is available
Hello all! At last i have uploaded the fixed version of Yandex maps for openlayers. Look here: Yandex maps for OpenLayers (in sandbox). This fix removes latitude distortion because of ellipsoid globe model used in YandexMaps in contrast to spheroid in Google and Bing. I can't make these changes in simple version (beneath)— i have no idea about projection (EPSG) used in this webmap. If you have — send me description (see Spatialreference).
There are 2 files Yandex.html and OL_Yandex.js
OpenLayers is splendid opensource javascript framework for webmapping. "Yandex.Maps" (russian:Яндекс.Карты) - russian webmapping service (like Google Maps or VirtualEarth)
This is example map (up) and here is the code (down):
<script type="text/javascript" src="http://www.openlayers.org/api/OpenLayers.js"></script> <div id="map" style="border: 1px solid lightgray; margin: 0pt 0pt 30px; padding: 0pt; width: 350px; height: 256px;"/> <script type="text/javascript"> function yandex_getTileURL(bounds){ var res = this.map.getResolution(); var maxExtent = (this.maxExtent) ? this.maxExtent : yandexBounds; var tileW = (this.tileSize)?this.tileSize.w:256; var tileH = (this.tileSize)?this.tileSize.h:256; var x = Math.round((bounds.left - maxExtent.left)/(res * tileW)); var y = Math.round((maxExtent.top - bounds.top)/(res * tileH)); var z = this.map.getZoom();var limit = Math.pow(2, z); if (y <0>= limit) { return OpenLayers.Util.getImagesLocation() + "404.png"; }else { x = ((x % limit) + limit) % limit; url = (this.url)?this.url:"http://vec02.maps.yandex.net/"; return url+"tiles?l=map&v=2.2.3&x="+x+"&y="+y+"&z="+z; } }; var yandexBounds = new OpenLayers.Bounds(-20037508,-20002151,20037508,20072865); var map = new OpenLayers.Map('map', { projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326"), units: "m", maxResolution: 156543.0339, maxExtent:new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508.34) }); var yandexMaps = new OpenLayers.Layer.TMS("Yandex","http://vec02.maps.yandex.net/", { maxExtent:yandexBounds, type:"png", getURL:yandex_getTileURL, numZoomLevels:18, attribution:'<a href="http://beta-maps.yandex.ru/">Яндекс.Карты</a>', transitionEffect:'resize' }); map.addLayers([yandexMaps]); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.zoomTo(4); </script>