Applet per Greasemonkey aufrufen

  • Themenstarter Themenstarter coolius70
  • Beginndatum Beginndatum
C

coolius70

Gast
Ich möchte ein Applet auf eine Webseite per Greasmonkey einbinden um daraufhin Daten aus der Website zu verarbeiten.

Konnte das Applet per Greasemonkey einbinden und aufrufen. Das einzige Problem ist, dass ich den PARAM Parameter nicht setzen kann. Das folgende Beispiel läuft nur, wenn das Tag NICHT applet heisst. Sobald es applet heisst, lässt GM oder FF das PARAM Tag ganz weg, bei APPLE beispielsweise ist es da.

Irgendwie scheint entweder GM oder FFdas Applet Tag speziell zu interpretieren. Ich benötige aber den PARAM dringend, sonst kann ich keine Daten ans Applet geben.

Wer eine Idee?

Java:
	var param = document.createElement("PARAM");
	param.setAttribute("name", "table");
	param.setAttribute("value", "gaga");

	var myApplet = document.createElement("[B]APPLET[/B]");  // <-- der Bösewicht
	myApplet.setAttribute("id", "artefakteApplet");
	myApplet.setAttribute("name", "artefakteApplet");
	myApplet.setAttribute("code", "Artefakte.class");
	myApplet.height = 200;
	myApplet.width  = 200;
	document.body.appendChild(myApplet);
    document.getElementById("artefakteApplet").appendChild(param);
 
entweder war da wirklich jemand so *ironie an* intiligent *ironie aus* und hat das <applet>-tag komplett unter den tisch fallen lassen *was ich den flaschen von FF durchaus zu trauen würde* ... da dies laut W3C offiziell veraltet ist und durch den <object>-tag ersetzt werden sollte ...

oder es gibt da einen ziemlich finsteren bug ...

allgemein zum applet-tag ... das problem könnte auch dadurch entstehen das man innerhalb von <applet></applet> mehr als einen <param />-tag setzen kann

btw : formatierungs-codes funktionieren NICHT innerhalb eines code-blocks ...
 
Wenn ich stattdessen das Object Tag verwende, dann renderd GM es korrekt rein.

Java:
	var param = document.createElement("PARAM");
	param.setAttribute("name", "table");
	param.setAttribute("value", "gaga");

	var myApplet = document.createElement("OBJECT");
	myApplet.setAttribute("id", "artefakteApplet");
	myApplet.setAttribute("name", "artefakteApplet");
	myApplet.setAttribute("classid", "java:Artefakte.class");
	myApplet.setAttribute("codetype", "application/java-vm");
	myApplet.setAttribute("height", "200");
	myApplet.setAttribute("width", "200");
	document.body.appendChild(myApplet);
    document.getElementById("artefakteApplet").appendChild(param);

der HTML Code sieht folgendermassen aus

Java:
<object width="200" height="200" id="artefakteApplet" name="artefakteApplet" classid="java:Artefakte.class" codetype="application/java-vm">
    <param name="table" value="gaga">
</object>

Allerdings erhält das Applet nun keinen PARAM mehr (vorher ging es wenn man im Debugger das APPLET Tag richtig schrieb). Ist die Parameterübergabe hier anders?
 
Nein, die Parameter werden genauso übergeben.
Versuch mal zuerst den Param an das object zu hängen, und danach erst das object in deine Seite zu setzen.
 
Wenn ich die letzten beiden Zeilen vertausche, dann ist das ganze Object nicht mehr drinnen, allernativ hab ich noch folgendes ausprobiert, in der Hoffnung die fehlende PARAM Zeile noch reinzukriegen:

Java:
	var appletDiv = document.createElement('div');
	appletDiv.innerHTML =
    '<applet id="artefakteApplet" code="Artefakte.class" ' +
    'width="200" height="200" ' +
    '<param name="table" value="gaga"></param>' +
    '</applet>';
	document.body.appendChild(appletDiv);

mit dem Resultat

Java:
<applet width="200" height="200" value="gaga" name="table" <param="" code="Artefakte.class" id="artefakteApplet"></applet>

Irgnedjemand scheint hier bereits beim rendern mächtig zu interpretieren
 
Nein, dein String ist einfach falsch, es fehlt eine > nach der height angabe.

Wenn ich die letzten beiden Zeilen vertausche, dann ist das ganze Object nicht mehr drinnen
Richtig, weils in deinem Document dann noch kein Element mit der id artefakteApplet gibt.
Code:
myApplet.appendChild(param);
 
hmm .. ich glaub ich war etwas vorschnell ...

zieh dir mal folgende page rein : Using applet, object and embed Tags

zu lesen gibt es dort infos wie

[...] W3C hat <applet> als DEPRECATED makiert [...] es sollte stattdessen <object> verwendet werden [...]
[...] für InternetExplorer auf Windows sollte <object> verwendet werden [...]
[...] für die Mozilla-Familie sollte <embed> verwendet werden [...]
[...] da das W3C bisher keinen einheitlichen standard zur implementierung von <object> gibt und es zwischen verschiedenen browser-familien kompatibilitäts-probleme geben kann empfiehlt SUN weiterhin die verwendung des <applet>-tags bis zur eindeutigen referenz durch das W3C [...]

ganz wichtig beim <object> tag ist vor allem das attribut "clsssid" welches nur durch den InternetExplorer interpretiert wird *da dort information im zusammenhang mit der windows-registry drin stehen* ... von der Mozilla-Familie jedoch ignoriert wird *sollte also daher auf jeden fall rein um IE zu supporten*


diesen infos nach liegt es scheinbar daran das entweder Mozilla den support für <applet> langsam einstellt *aus welchen gründen auch immer* ... oder GreaseMonkey probleme hat dies richtig einzubinden ...

da GreaseMonkey sowieso nur für FireFox verfügbar ist solltest du also lieber das Mozilla-spezifische <embed> tag nutzen ...
 
Hatte noch den > vergessen, wenn man es richtig macht geht der Aufruf, aber die PARAM Zeile fehlt wieder, diesmal aber nur in der Firebug Anzeige.

<div>
<applet id="artefakteApplet" width="200" height="200" code="Artefakte.class">
</div>

Wenn man das HTML in den Editor kopiert kommt es korrekt und auch der Parameter wird übergeben.

<div>
<applet width="200" height="200" code="Artefakte.class" id="artefakteApplet">
<param value="gaga" name="table">
</applet>
</div>

Jetzt muss ich nur noch rausfinden, wie ich dem Applet via innerHTML Teile der HTML Seite übergebe.

Auf alle Fälle hat es da von mir aus gesehen einen grossen Käfer drinnen.
 
! ACHTUNG !
<param> hat KEIN end-tag ... es sollte XHTML-konform mit "/>" abgeschlossen werden ... also
Code:
<param name="name" value="value" />

warum GreaseMonkey aber
Code:
<applet [...] <param [...] />></applet>
draus macht zeigt den fehler schon ... der param-tag steht an der falschen stelle
 
Ja, stimmt, mit dem richtigen PARAM Syntax gehts dann.

Das Embed Tag funktioniert auch und ist deutlich einfacher zu gebrauchen. Ich werde also mit dieser Variante weitermachen.

Java:
	var myApplet = document.createElement("EMBED");
	myApplet.setAttribute("id", "artefakteApplet");
	myApplet.setAttribute("name", "artefakteApplet");
	myApplet.setAttribute("code", "Artefakte.class");
	myApplet.setAttribute("type", "application/x-java-applet");
	myApplet.setAttribute("height", "200");
	myApplet.setAttribute("width", "200");
	myApplet.setAttribute("table", "gugus");
	document.body.appendChild(myApplet);

Vielen Dank für die Hilfe
 

Neue Themen


Zurück
Oben