# JavaScript-Code aus Applet ausführen?



## javabar (10. Mrz 2009)

Hallo!

Ich möchte nur ein Applet schreiben, das die installierte Java-Version prüft, wenn die Version ok ist, dann soll auf der Seite einen Link auf eine andere Seite freischalten, auf welcher eine neuere Java-Version benötigt wird.

Nach sowas lässt sich dummerweise schwer googlen.

'ne alternative Methode, fiel mir erst eben noch ein, wäre, wenn der Button selbst einJavaApplet ist, welcher nur dann klickbar ist, wenn die Java-Version ok ist.


----------



## L-ectron-X (10. Mrz 2009)

Dazu solltest du dein Applet Java 1.1.8 kompatibel schreiben/kompilieren, damit möglichst viele/alle Clients dieses Applet ausführen können. Außerdem wäre eine Webseite gut, die zu einer Fehlermeldung weiterleitet, wenn das Applet nicht innerhalb von 5-10 Sekunden startet, denn für alle Browser (Browserunterscheidung) die passenden Tags einzubauen ist ziemlich müßig.


----------



## javabar (10. Mrz 2009)

Etwa so?

[HIGHLIGHT="Java"]import java.applet.Applet;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.URL;
import java.util.StringTokenizer;

public class jvc extends Applet implements MouseListener {

	private static final long serialVersionUID = 1L;

	Image img0,img1;
	int texty;
	String text0,text1,href0,href1,version;
	boolean versionok;
	Font font;

	public boolean checkVersion(String version) {
		StringTokenizer st_ist = new StringTokenizer(System.getProperty("java.version"),"._");
		StringTokenizer st_soll = new StringTokenizer(version,"._");
		int size1 = st_ist.countTokens();
		int size2 = st_soll.countTokens();
		int l = size1<size2 ? size1 : size2;
		int x1,x2;
		for(int i=0;i<l;i++) {
			x1 = Integer.parseInt(st_ist.nextToken());
			x2 = Integer.parseInt(st_soll.nextToken());
			if(x1<x2)
				return false;
			if(x1>x2)
				return true;
		}
		return true;
	}
	public void init() {
		String f0,f1,s;
		text0="";
		text1="";
		href0="#";
		href1="#";

		f0="";
		f1="";
		s=getParameter("image0");
		if(s!=null)
			f0=s;
		s=getParameter("image1");
		if(s!=null)
			f1=s;
		text0=getParameter("text0");
		href0=getParameter("href0");
		text1=getParameter("text1");
		href1=getParameter("href1");
		try {
			s = getParameter("texty");
			texty = Integer.parseInt(s);
		}
		catch(Exception e) {
			texty = getHeight()/2;
		}
		version=getParameter("version");
		versionok = checkVersion(version);
		if(versionok && href1!=null && !href1.equals("") || !versionok && href0!=null && !href0.equals(""))
			setCursor(new Cursor(Cursor.HAND_CURSOR));
		addMouseListener(this);


        img0 = getImage( getDocumentBase(), f0 );
        img1 = getImage( getDocumentBase(), f1 );
		font = new Font("Arial",Font.PLAIN,12);
        repaint();	
	}

	public jvc() {

	}

	public void paint(Graphics g) {
		int x;
		g.setFont(font);
		g.setColor(Color.black);
		if(versionok) {
			if(img1!=null) {
				g.drawImage( img1, 0, 0, this );
				if(text1 != null) {
					x = (getWidth() - g.getFontMetrics().stringWidth(text1))/2;
					g.drawString(text1, x, texty);
				}
			}
		}
		else if(img0!=null ) {
			g.drawImage( img0, 0, 0, this );
			if(text0 != null) {
				x = (getWidth() - g.getFontMetrics().stringWidth(text0))/2;
				g.drawString(text0, x, texty);
			}
		}		
	}

	public void mouseClicked(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}
	public void mousePressed(MouseEvent e) {}

	public void mouseReleased(MouseEvent e) {
		if(versionok) {
			if(href1!=null && !href1.equals(""))
				try {
					getAppletContext().showDocument(new URL(href1));
				}
				catch(Exception ex) {}
		} else {
			if(href0!=null && !href0.equals(""))
				try {
					getAppletContext().showDocument(new URL(href0));
				}
				catch(Exception ex) {}			
		}
	}
}[/HIGHLIGHT]

Ich habe es gleich so programmiert, dass es durch <PARAM>s konfigurierbar ist.

image0 : Hintergrundbild, wenn Version nicht ok ist
image1 : Hintergrundbild, wenn Version ok ist
text0: Text, wenn Version nicht ok ist
text1: Text, wenn Version ok ist
href0: Link, wenn Version nicht ok (entweder keiner oder Link auf Java-Update-Seite)
href1: Link, wenn Version ok
version: die erforderliche Java-Version (z.B. 1.4 oder 1.6.0_12)

texty: Text-Position (Y-Wert)
textx gibt es hier nicht, der Text wird zentriert.


----------



## L-ectron-X (11. Mrz 2009)

Das würde ja voraussetzen, dass Java installiert und aktiviert ist.
Was soll denn passieren, wenn deshalb kein Applet funktioniert?

Dafür kann man eine Webseite mit Meta-Weiterleitung bauen.


----------



## javabar (12. Mrz 2009)

[HIGHLIGHT="html4strict"]<applet ... >
<param ... />
<param ... />
<param ... />
Java nicht verfügbar
</applet>[/HIGHLIGHT]

Dann erscheint statt des Applets einfach der Text "Java nicht verfügbar", oder man fügt gleich einen Link ein:

<a href="http://www.java.com/de/download/">Java downloaden</a>

Viele Grüße

Egon Schmid


----------

