header image
Home arrow Computing arrow Software Development arrow Lösung für "Klicken Sie hier um das Steuerelement zu aktivieren"
Lösung für "Klicken Sie hier um das Steuerelement zu aktivieren" PDF Print E-mail
Nov 16, 2006 at 07:10 PM

Das durch einen Patentstreit mit Microsoft entstandene Problem, dass man eingebundene Objekt im Internet Explorer wie zB Java Applets oder Flash-Objekte durch einmaliges anklicken aktivieren muss, nervt seit Monaten unzählige Internet-Surfer, User von Web-Anwendungen und Entwickler, die Workarounds für diese mutwillig von Microsoft eingeführte Änderung suchen müssen.

 Schon länger existieren Tips zu Workarounds, einer wurde auch von Microsoft selbst veröffentlich. Das Problem: all diese Workarounds funktionieren bzw. lösen das Problem nur im Falle von statischen<APPLET> oder <OBJECT> Tags. Bis gestern war ich vergeblich auf der Suche nach einer allgemein gültigen Lösung die auch bei serverseitig dynamisch generiertem HTML (zB Java Servlets) funktioniert.

ENDLICH habe ich da auch was gefunden:

Die Anforderung ist, dass zB das APPLET-Tag von einem JavaScript ausserhalb der HTML Datei geschrieben wird, die dynamisch generierten PARAM-Tags können aber wie zuvor direkt in der HTML Datei verbleiben! Ist zwar nicht besonders schön, aber funktioniert: Der Trick ist also eine externe JavaScript-Funktion die das APPLET-Tag mit document.write in den HTML-Code zur Laufzeit einfügt:

[rewriteapplet.js]

function writeAppletHeader(aCode, aArchive, aCodebase, aWidth, aHeight) {

document.write('<APPLET code="' + aCode + '" archive="' + aArchive + '" codebase="' + aCodebase + '" width="' + aWidth + '" height="' + aHeight + '"');

document.write(' align="middle" >');

document.write(' <PARAM NAME="foo" VALUE="bar"> ');

}

 

 

[der zB mit JSP oder Velocity dynamisch generierte HTML Code]:

...

<script language="Javascript1.2" src="scripts/rewriteapplet.js">

...

<script>

writeAppletHeader('TheApplet.class', 'applets.jar', 'applets/', '400', '300');

</script>

<param name="appletparam1" value="val1"/>

<param name="actionName" value="${action}"/>

#if ($dependency1==true)<param name="optionalParam" value="valuex">#end

... etc ...

</applet> 

 

 Die Basis für diese Lösung findet man bei Real Gagnon's HOW TO (Solution#2) unter:

http://www.rgagnon.com/javadetails/java-0526.html 

 Thanks Real!!!

 

 

  

 

Last Updated ( Nov 16, 2006 at 07:26 PM )
Zwei Dinge sind unendlich:
Das Universum
und die menschliche Dummheit.
Aber bei dem Universum
bin ich mir noch nicht ganz sicher.

Albert Einstein