Benutzerdefinierte Suche

von Applet auf JavaScript aufrufen

  1. mefir

    mefir Thread StarterMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    36
    Zustimmungen:
    1
    Gibt eine Möglichkeit aus einem Applet unter MacOSX auf JavaScript zuzugreifen? Unter Windows kann man das ja mit netscape.javascript.JSObject, aber unter OSX funktioniert das irgendwie nicht.
    Ich brauche das um den Status eines Applets zu speichern ohne das es direkten Zugriff auf das System bekommt.
     
    mefir, 05.11.2006
  2. ybasket

    ybasketMacUser Mitglied

    Mitglied seit:
    17.01.2006
    Beiträge:
    325
    Zustimmungen:
    3
    netscape.javascript.JSObject sollte auch unter os x funktionieren,findet er die Klasse überhaupt, d.h. kannst du diese Klasse denn per Reflection laden?

    Bricht er beim Aufruf oder beim eigentlichen JavaScript ab (verwendest du ein Windows/IE spezifisches Script?)?

    poste doch mal Code!
     
    ybasket, 06.11.2006
  3. mefir

    mefir Thread StarterMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    36
    Zustimmungen:
    1
    Code:
    package mefir.j4.properties;
    
    import java.applet.Applet;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
    import java.util.TimeZone;
    
    import mefir.j4.Debug;
    import netscape.javascript.JSObject;
    
    public class PropApplet implements PropObject{
    	public PropApplet(Applet applet) throws Exception{
    		this.applet = applet;
    		format = new SimpleDateFormat("EE, dd-MMM-yy HH:mm:ss zz", new Locale("en","US"));
    		format.setTimeZone(TimeZone.getTimeZone("GMT"));
    		doc = (JSObject) (JSObject.getWindow(applet)).getMember("document");
    	}
    	
    	Applet applet;
    	JSObject doc; 
    	String name = "mefir_j4_prefs";
    	long time = 1000L * 3600L * 24L * 365L * 10L; 
    	DateFormat format;
    	
    	
    	public String load() {
    		try{
    			return this.getCookie();
    		}catch(Throwable t){
    			Debug.println(t);
    			return "";
    		}
    	}
    
    	public void save(String s) {
    		try{
    			this.setCookie(s);
    		}catch(Throwable t){
    			Debug.println(t);
    		}
    	}
    	
    	void setCookie(String value)throws Exception{
    		Date d = new Date(System.currentTimeMillis() + time);
    		String cookie = name+"="+value+"; expires="+format.format(d);
    		doc.setMember("cookie", cookie);
    	}
    	
    	String getCookies() throws Exception{
    		return (String) doc.getMember("cookie");
    	}
    	
    	String getCookie()throws Exception{
    		String cookie = getCookies();
    		String search = this.name+"=";
    		if(cookie.length() > 0){
    			int off = cookie.indexOf(search);
    			if(off !=-1){
    				off+=search.length();
    				int end = cookie.indexOf(";",off);
    				if(end == -1) end = cookie.length();
    				return cookie.substring(off,end);
    			}
    		}
    		return "";
    	}
    
    	
    }
    
    Da JSObject nicht gefunden wird, wird das PropApplet-Objekt nicht erzeugt und das Speichern läuft dann leider nicht.
    Unter Winows läuft das fehlerfrei, leider ist das Programm hauptsächlich für Macs gedacht.
    Was meinst du mit "per Reflection laden" ?
     
    mefir, 06.11.2006
  4. acid

    acidMacUser Mitglied

    Mitglied seit:
    18.08.2005
    Beiträge:
    472
    Zustimmungen:
    0
    Bin kein Java-Experte aber möglicherweise ist deine Java-Version zu alt?
     
    acid, 06.11.2006
  5. mefir

    mefir Thread StarterMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    36
    Zustimmungen:
    1
    Auf meinem PC habe ich Java1.4 auf dem Mac 1.5. Das Programm ist so ausgelegt, dass es eigentlich ab Java1.3 problemlos laufen sollte.
     
    mefir, 06.11.2006
  6. oglimmer

    oglimmerMacUser Mitglied

    Mitglied seit:
    16.11.2004
    Beiträge:
    1.150
    Zustimmungen:
    91
    1.) testest du das über file:// oder http://localhost ? ich meine dass gerade der Safari hier sich anders verhält. ich würde auf jeden fall http:// verwenden.

    2.) du könntest noch mal versuchen über (Beispielcode)
    PHP:
    void setCookie(String value) {
        
    jso.eval("document.cookie = 'Name="+value+"; expires=Wed, 11 Nov 2009 12:00:00 GMT';");
    }

    String getCookie() {
        return (String) 
    jso.eval("document.cookie");
    }
    die Cookies zu setzten. Das funkt 100% auf OS X mit Safari.
     
    oglimmer, 06.11.2006
  7. ybasket

    ybasketMacUser Mitglied

    Mitglied seit:
    17.01.2006
    Beiträge:
    325
    Zustimmungen:
    3
    Reflection ist die Möglichkeit in Java Klassen zur Laufzeit nachzuladen. Diese Methode eignet sich u.a. auch dazu, das Vorhandensein und korrekte Funktionieren einer Klasse zur Laufzeit zu testen. Vielleicht hast du auch schon mal beim Umgang mit Datenbanken folgenden Code gesehen:

    Class.forName( "[Name des JDBC-Treibers]").newInstance();

    Das ist ein bekanntes Beispiel für das Laden von Klassen zur Laufzeit, mehr zum Thema Reflection in der allseits bekannten Java Insel.

    Zum konkreten Problem würde ich mich an deiner Stelle an die vorangegangenen Ratschläge halten.
     
    ybasket, 06.11.2006
  8. mefir

    mefir Thread StarterMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    36
    Zustimmungen:
    1
    Über http://localhost funktionierts.
    Das Dumme ist nur, dass das Applet in einem Widget läuft und somit leider nicht mit http aufgerufen wird.
    Kann man den Aufruf der Haupt-HTML-Datei in einem Widget über http erzwingen?
     
    mefir, 06.11.2006
Die Seite wird geladen...
Ähnliche Themen - Applet auf JavaScript
  1. Macy51
    Antworten:
    2
    Aufrufe:
    218
  2. marc20031
    Antworten:
    2
    Aufrufe:
    1.109
    marc20031
    17.02.2009
  3. Wolfen1974DE
    Antworten:
    14
    Aufrufe:
    2.875
  4. iCox87
    Antworten:
    7
    Aufrufe:
    913
  5. mcmonk
    Antworten:
    0
    Aufrufe:
    1.018