PDA

View Full Version : [JS] Creazione dinamica di plugin su Firefox


ilsensine
14-09-2007, 16:00
Su ie, per creare un plugin dinamicamente da Javascript è sufficiente un new ActiveXObject(<obj name>), su FF come si fa?
L'oggetto Components
http://developer.mozilla.org/en/docs/Components_object
non va bene in quanto è praticamente precluso ai JS di pagine web.
Idee?

ilsensine
16-09-2007, 17:01
mmm tutti lo osannano, ma appena provi a fare una BANALISSIMA domanda...:D

MEMon
17-09-2007, 11:27
Ma cosa intendi per creazione dinamica?
E cosa intendi per plugin?
Firefox ha estensioni non plugin.

ilsensine
17-09-2007, 11:40
Sì che li ha, il plugin per Flash ad esempio.
Fai conto che devi creare da JS una istanza di flash, non associata a nessuna parte della pagina (quindi non con un tag <object> dentro la pagina o simili), come si fa?

MEMon
17-09-2007, 11:43
Ah quei plugin intendi, si hai ragione allora scusami.

Per capirci, te cosa hai intenzione di fare? perchè vorresti creare un'"istanza" di flash senza applicarlo alla pagina?

ilsensine
17-09-2007, 11:56
Non devo creare una istanza di flash, devo creare un altro plugin per invocare dei metodi per ottenere delle informazioni.

MEMon
17-09-2007, 12:05
mmmm non ti seguo...mi sa che non so aiutarti.
Ma informazioni di che tipo? Sul plugin? Non ci sono metodi apposta per avere informazioni dal plugin?

ilsensine
17-09-2007, 12:20
Facciamola semplice: come faresti a creare da javascript una istanza di Flash? Risolto questo, ho risolto il mio problema.
Per esempio, con Components è possibile:
http://developer.mozilla.org/en/docs/Components.Constructor
ma non si può usare Components da pagine web, in quanto ti da accesso praticamente a tutti gli oggetti xpcom.

ilsensine
17-09-2007, 13:15
Ok una pezza l'ho trovata, passando però per un orrendo hack. Se hai qualche idea per ripulirlo...

function doit()
{
str = "<object id=\"__test_object\" [ecc]>/<object>"
div = document.createElement("div");
div.innerHTML = str;
// Questa riga e' necessaria, altrimenti l'oggetto non viene creato.
// nella pagina non viene visualizzato nulla,
// in quanto width e height dell'oggetto sono 0.
document.body.appendChild(div);

obj = document.getElementById("__test_object");
// faccio quello che devo fare con l'oggetto...

document.body.removeChild(div);
}

MEMon
17-09-2007, 13:18
Hai provato a creare direttamente l'elemento <object> con createElement senza passare per un div e quindi senza aggiungerlo alla pagina?

ilsensine
17-09-2007, 13:21
/me ignorante
Come intendi esattamente?

ilsensine
17-09-2007, 13:24
intendi createElement("object")? Poi i parametri come li imposto (in particolare type= )?

MEMon
17-09-2007, 13:25
object=document.createElement("object");
object.setAttribute(attributo,valore);
.
.
object.setAttribute(attributo,valore); ecc ecc

A quel punto object sarà a tutti gli effetti l'oggetto DOM dell'elemento <object>
(in pratica come hai fatto prima per creare il div)

A quel punto forse, e ripeto forse, lo puoi utilizzare per il tuo scopo senza averlo dovuto aggiungere necessariamente alla pagina.

ilsensine
17-09-2007, 13:31
Ho provato, la appendChild è comunque necessaria per creare l'oggetto (posso vedere dai log se viene creato), ma...non riesco a invocarne i metodi js :muro: