Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-12-2009, 15:58   #1 (permalink)
:]-------
 
Benutzerbild von kleiner midas
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 115
Firefox wmode

Hallo zusammen,

habe mich heute mit nem alten Thema herumgeschlagen und ne ganz nette Lösung (wie ich finde) gefunden.

Im Firefox 2 und 3 (kleiner 3.5) kann man bei der Nutzung von wmode=transparent in Textfelder Zeichen die in Kombination mit der 'AltGr'-Taste erzeugt werden (wie z.B. das @) nicht eingeben.

Hier ne kleine Demo, mit meiner Lösung:
Firefox wmode

Bei Eingaben in das Feld 'Input' sieht man den Bug.
Bei einer Eingabe in das Feld 'Input checked' wird dieser Fehler behoben.

Ich hoffe, es kann jemand brauchen.

LG,
Peter
Angehängte Dateien
Dateityp: zip FirefoxWmodeAt.zip (29,1 KB, 14x aufgerufen)
kleiner midas ist offline   Mit Zitat antworten
Alt 03-12-2009, 16:06   #2 (permalink)
Neuer User
 
Benutzerbild von B4RNY
 
Registriert seit: Dec 2009
Beiträge: 6
hi, danke das ist super, ich hab mich schon lange gefragt wie die Zeichen dafür sind, ^^
B4RNY ist offline   Mit Zitat antworten
Alt 03-12-2009, 21:02   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 468
hi,
das ist echt super.
kann leider nicht öffnet. habe flash 8

könntest du vielleicht das script hier posten?
chanel ist offline   Mit Zitat antworten
Alt 04-12-2009, 08:50   #4 (permalink)
:]-------
 
Benutzerbild von kleiner midas
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 115
Script

Hi chanel,

kann ich gerne machen:

Code:
var _keyList : Object = new Object();
/**************************************
* Keys
***************************************/
/**
* Key Event Down
* Speichert den gedrückten Key in der '_keyList'
**/
function onKeyDown()
{
	setKey( Key.getCode(), true );
	keyCodeDownTxt.text = Key.getCode();
	debugAllSetKeys();
}

/**
* Key Event Up
* Entfernt den losgelassenen Key aus der '_keyList'
**/
function onKeyUp()
{
	setKey( Key.getCode(), false );
	keyCodeUpTxt.text = Key.getCode();
	debugAllSetKeys();
}

Key.addListener( this );

/**
* Keys in _keyList einfügen/entfernen.
* @param			code : Number
* @param			b : Boolean
**/
function setKey( code : Number, b : Boolean ) : Void
{
        // Firefox mit wmode setzt beim drücken der AltGr-Taste 17 statt 18
	code = code == 17 ? 18 : code;
	if( b )
	{
		_keyList[ String( code ) ] = b;
	}
	else
	{
		delete _keyList[ String( code ) ];
	}
}

/**
* Gibt zurück, ob der übergebene Key zurzeit gedrückt wird.
* @param			code : Number
* @return			Boolean
**/
function getKey( code : Number ) : Boolean
{
	var b : Boolean = _keyList[ String( code ) ];
	return b == null ? false : b;
}

function getKeyNum() : Number
{
	var n : Number = 0;
	for( var i in _keyList )
	{
		if( _keyList[ i ] == true )
		{
			n++;
		}
	}
	return n;
}

/**
* Gibt alle zurzeit gedrückten Keys aus.
**/
function debugAllSetKeys() : Void
{
	setKeysTxt.text = getKeyNum() + ": ";
	for( var i in _keyList )
	{
		setKeysTxt.text += i + ", ";
	}
}

/**************************************
* Textfield-Kontrolle
***************************************/
function onChanged( textfield : TextField ) : Void
{
	if( getKeyNum() >= 2 && getKey( 18 )  )
	{
		var caretIndex : Number = Selection.getCaretIndex();
		var char : String = "";
		if( getKey( 81 ) ) char = "@";
		else if( getKey( 69 ) ) char = "€";
		else if( getKey( 226 ) ) char = "|";
		else if( getKey( 107 ) ) char = "~";
		else if( getKey( 50 ) ) char = "²";
		else if( getKey( 51 ) ) char = "³";
		else if( getKey( 55 ) ) char = "{";
		else if( getKey( 56 ) ) char = "[";
		else if( getKey( 57 ) ) char = "]";
		else if( getKey( 48 ) ) char = "}";
		else if( getKey( 219 ) ) char = "\\";
		
		if( char != "" ) textfield.replaceText( caretIndex - 1, caretIndex, char );

	}
}
inputCheckedTxt.addListener( this );
Textfelder anlegen, fertig

LG,
Peter
kleiner midas ist offline   Mit Zitat antworten
Alt 04-12-2009, 10:24   #5 (permalink)
:]-------
 
Benutzerbild von kleiner midas
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 115
FirefoxWmodeFix

Hallo zusammen,

habe mir jetzt ne kleine Helfer-Klasse geschrieben. Damit geht es etwas einfacher:
FirefoxWmodeFix

Code:
/**
 * Bug im Firefox 2 und 3 (kleiner 3.5)
 * Bei der Nutzung von wmode=transparent werden in Textfelder Zeichen,
 * die in Kombination mit der 'AltGr'-Taste erzeugt werden (wie z.B. das @) nicht richtig angegeben.
 * 
 * Hier können Textfelder angemeldet werden, bei denen dieser Bug korrigiert werden soll.
 * @author Peter Klarl
 */
class de.interactivem.env.fixes.FirefoxWmodeFix 
{
	private var _keyList : Object = new Object( );
	private var _txtList : Array;
	private var _infoTxt : TextField;

	public function FirefoxWmodeFix( infoTxt : TextField )
	{
		init();
		setInfoTextField( infoTxt );
	}
	
	private function init() : Void
	{
		Key.addListener( this );
		_txtList = new Array();
	}
	
	/**
	 * Setzt ein Textfeld für die Infoausgabe.
	 */
	public function setInfoTextField( txt : TextField ) : Void
	{
		if( txt != null ) _infoTxt = txt;
	}
	
	/**
	 * Stellt alle gedrückten Keys im _infoTxt dar.
	 */
	public function showAllSetKeys() : Void
	{
		if( _infoTxt != null ) _infoTxt.text = getAllSetKeysAsString();;
	}
	
	/**
	 * Entfernt die Listener aller angemeldeten Textfelder und den Key-Listener.
	 */
	public function remove() : Void
	{
		Key.removeListener( this );
		for( var i : Number = 0; i < _txtList.length ; i++ )
		{
			var txt : TextField = _txtList[ i ];
			txt.removeListener( this );
		}
	}
	
	/**
	 * Meldet ein Textfeld an.
	 */
	public function addTextField( txt : TextField ) : Void
	{
		txt.addListener( this );
		_txtList.push( txt );
	}

	/**************************************
	* Keys
	***************************************/
	/**
	* Key Event Down
	* Speichert den gedrückten Key im Speicher-Objekt '_keyList'
	**/
	private function onKeyDown() : Void
	{
		setKey( Key.getCode(), true );
		showAllSetKeys();
	}
	
	/**
	* Key Event Up
	* Entfernt den losgelassenen Key aus den Speicher-Objekt '_keyList'
	**/
	private function onKeyUp() : Void
	{
		setKey( Key.getCode(), false );
		showAllSetKeys();
	}
	
	/**
	* Keys in einen Objekt einfügen/entfernen.
	* @param			code : Number
	* @param			b : Boolean
	**/
	private function setKey( code : Number, b : Boolean ) : Void
	{
		code = code == 17 ? 18 : code;
		if( b )
		{
			_keyList[ String( code ) ] = b;
		}
		else
		{
			delete _keyList[ String( code ) ];
		}
	}
	
	/**
	* Gibt zurück, ob der übergebene Key zurzeit gedrückt wird.
	* @param			code : Number
	* @return			Boolean
	**/
	private function hasKey( code : Number ) : Boolean
	{
		var b : Boolean = _keyList[ String( code ) ];
		return b == null ? false : b;
	}
	
	/**
	* Gibt die Anzahl der gedrückten Tasten zurück.
	* @return			Number
	**/
	private function getKeyNum() : Number
	{
		var n : Number = 0;
		for( var i in _keyList )
		{
			if( _keyList[ i ] == true )
			{
				n++;
			}
		}
		return n;
	}
	
	/**
	* Gibt alle zurzeit gedrückten Key aus.
	**/
	public function getAllSetKeysAsString() : String
	{
		var s : String = getKeyNum() + ": ";
		for( var i in _keyList )
		{
			s += i + ", ";
		}
		return s;
	}
	
	/**************************************
	* Textfield-Kontrolle
	***************************************/
	private function onChanged( textfield : TextField ) : Void
	{
		if( getKeyNum() >= 2 && hasKey( 18 )  )
		{
			var caretIndex : Number = Selection.getCaretIndex();
			var char : String = "";
			if( hasKey( 81 ) ) char = "@";
			else if( hasKey( 69 ) ) char = "€";
			else if( hasKey( 226 ) ) char = "|";
			else if( hasKey( 107 ) ) char = "~";
			else if( hasKey( 50 ) ) char = "²";
			else if( hasKey( 51 ) ) char = "³";
			else if( hasKey( 55 ) ) char = "{";
			else if( hasKey( 56 ) ) char = "[";
			else if( hasKey( 57 ) ) char = "]";
			else if( hasKey( 48 ) ) char = "}";
			else if( hasKey( 219 ) ) char = "\\";
			
			if( char != "" ) textfield.replaceText( caretIndex - 1, caretIndex, char );
		}
	}
	
	public function toString() : String {
		return "de.interactivem.env.fixes.FirefoxWmodeFix";
	}
	
}
Anwendungsbeispiel anbei und wie folgt:
Code:
import de.interactivem.env.fixes.FirefoxWmodeFix;

var firefoxWmodeFix : FirefoxWmodeFix = new FirefoxWmodeFix( setKeysTxt );
firefoxWmodeFix.addTextField( inputCheckedTxt );
Nur die beiden notwendigen Textfelder anlegen und fertig.

Ich hoffe, es kann jemand brauchen :]-

LG,
Peter
Angehängte Dateien
Dateityp: zip FirefoxWmodeFix.zip (30,9 KB, 10x aufgerufen)
kleiner midas ist offline   Mit Zitat antworten
Alt 04-12-2009, 15:43   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2006
Beiträge: 468
Vielen dank!!

Einfach PHÄNOMENAL.

Kann ich gut gebrauchen.

Have a nice day!
chanel ist offline   Mit Zitat antworten
Alt 16-12-2009, 07:47   #7 (permalink)
:]-------
 
Benutzerbild von kleiner midas
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 115
Na das freut mich :]-
kleiner midas ist offline   Mit Zitat antworten
Alt 16-12-2009, 09:32   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ich hab das mal in den 'Stuff'-Bereich verschoben, wenn's dir recht is…
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 16-12-2009, 09:46   #9 (permalink)
:]-------
 
Benutzerbild von kleiner midas
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 115
Si klaro
kleiner midas ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
firefox, wmode = transparent

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
WMODE und @-Zeichen bei Firefox fanyProductions ActionScript 2 1 03-03-2009 10:21
WMODE = Transparent im Firefox, @-Zeichen, etc. Sören Am Rande 5 21-01-2009 11:21
Probleme mit Firefox 3 auf Windows mit wmode=transparent phase HTML und CSS 2 14-10-2008 20:44
wmode Problem mit Firefox 2.0 JohannesX Flash CS3 Professional 0 01-09-2008 13:29
wmode in Mozilla/Firefox Geschan Flash MX 2004 9 22-10-2005 03:09


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele