über mich

Hallo, mein Name ist Heiko Dreyer. Ich arbeite freiberuflich als Webdesigner und Entwickler mit Schwerpunkt Flash/Flex Animation und Web-
Anwendungsentwicklung.

Brauchen Sie Hilfe bei Ihrem Webdesign oder suchen Sie einen Entwickler? Ich stehe Ihnen jederzeit mit meinen Fähigkeiten zur Verfügung.

über boxedfolder

Diese Website dient in erster Linie als Überblick meiner absolvierten Projekte. Sie bietet einen Auszug aus aktuellen Entwicklungsständen und Arbeiten.

Diesweiteren bemühe ich mich regelmäßig sonstiges wissenswertes im Bereich Webdesign und Medien zusammenzutragen.

navigateToUrl und Popup-Blocker

Vielleicht wird der Eine oder Andere das leidige Thema navigateToUrl und Popup-Blocker schmerzlich selber erlebt haben. Denn einige mehr oder weniger moderne Browser, wie der Internet Explorer 8, meinen einfach alles blockieren zu müssen was nicht im Fenster “_self” aufgerufen wird. Das gilt auch wenn kein weiteres Argument angegeben wird, also z.B. auch navigateToURL(“http://www.google.de”).

Eine gute Methode um dieses Verhalten auszuhebeln, ist es, die Javascript Schnittstelle des Browsers anzusprechen und dementsprechend ein neues Fenster zu generieren. In diesem Zusammenhang kann ich auf eine tolle und kompakte Klasse verweisen, die genau das tut:

URLNavigator.as:

package com.zorked {
	import flash.external.ExternalInterface;
	import flash.net.*;

	public class URLNavigator {

		/**
		 * Utility function to wrap up changing pages. Avoids over-aggressive popup blockers.
		 * @param url		The URL to change to. Either a String or a URLRequest
		 * @param window	The target browser window/tab, generally _self, _top, or _blank
		 * @usage URLNavigator.ChangePage("http://www.google.com", "_blank");
		 */
		public static function ChangePage(url:*, window:String = "_self"):void {
			var req:URLRequest = url is String ? new URLRequest(url) : url;
			if (!ExternalInterface.available) {
				navigateToURL(req, window);
			} else {
				var strUserAgent:String = String(ExternalInterface.call("function() {return navigator.userAgent;}")).toLowerCase();
				if (strUserAgent.indexOf("firefox") != -1 || (strUserAgent.indexOf("msie") != -1 && uint(strUserAgent.substr(strUserAgent.indexOf("msie") + 5, 3)) >= 7)) {
					ExternalInterface.call("window.open", req.url, window);
				} else {
					navigateToURL(req, window);
				}
			}
		}

	}
}

Was wird hier gemacht? Nun im Prinzip macht die Klasse einen Check ob es sich um gewisse Browser-Versionen handelt und führt dementsprechend einen normalen navigateToURL-Request aus, oder er ruft die Javascript Methode window.open() auf. Man ist im Grunde auf der sicheren Seite und gegen die Popup-Blocker Schikane einiger Browser gut gerüstet.

Link zum Artikel

14. Dezember 2009 (12:21 Uhr) - flash & flex, jquery & javascript, web nach oben

Bookmarks »


  • del.icio.us
  • Digg
  • Technorati
  • MisterWong.DE
  • Furl
  • Facebook
  • Live
  • Google
  • Sphinn
  • Mixx
  • NewsVine
  • BlinkList
  • co.mments
  • YahooMyWeb
  • Spurl
  • blogtercimlap
  • blogmarks
  • StumbleUpon
  • Ma.gnolia


0 Kommentare »