javascript - node - your_element properties




Come posso trasformare una stringa di HTML in un oggetto DOM in un'estensione di Firefox? (4)

Sto scaricando una pagina Web (tag soup HTML) con XMLHttpRequest e voglio prendere l'output e trasformarlo in un oggetto DOM su cui posso quindi eseguire query XPATH. Come posso convertire da una stringa in un oggetto DOM?

Sembra che la soluzione generale sia creare un iframe nascosto e gettare il contenuto della stringa in quello. Si è parlato dell'aggiornamento di DOMParser per supportare text / html ma da Firefox 3.0.1 si ottiene ancora un NS_ERROR_NOT_IMPLEMENTED se ci provi.

C'è qualche opzione oltre all'utilizzo del trucco nascosto dell'iframe? E se no, qual è il modo migliore per fare il trucco iframe in modo che il tuo codice funzioni al di fuori del contesto di tutte le schede attualmente aperte (in modo che le schede di chiusura non rovinino il codice, ecc.)?

Questo è un esempio del perché sto cercando una soluzione diversa dall'hacf iframe, se devo scrivere tutto quel codice per avere una soluzione robusta, allora preferirei continuare a cercare qualcos'altro.



Prova a creare un div

document.createElement( 'div' );

E poi imposta il tag soup HTML sul innerHTML del div. Il browser dovrebbe elaborarlo in XML, che quindi è possibile analizzare.

La proprietà innerHTML accetta una stringa che specifica una combinazione valida di testo ed elementi. Quando viene impostata la proprietà innerHTML, la stringa data sostituisce completamente il contenuto esistente dell'oggetto. Se la stringa contiene tag HTML, la stringa viene analizzata e formattata mentre viene inserita nel documento.


Quindi vuoi scaricare una pagina web come un oggetto XML usando javascript, ma non vuoi usare una pagina web? Dal momento che non hai il controllo su ciò che l'utente farà (chiusura di schede o finestre o quant'altro) avresti bisogno di farlo come un widget di Dashboard OSX o un'applicazione separata. Un'estensione per Firefox funzionerebbe anche, a meno che non ci si debba preoccupare che l'utente chiuda il browser.


C'è qualche opzione oltre all'utilizzo del trucco nascosto dell'iframe?

Sfortunatamente no, non ora. Altrimenti, il codice microsummary che indichi lo utilizzerà invece.

E se no, qual è il modo migliore per fare il trucco iframe in modo che il tuo codice funzioni al di fuori del contesto di tutte le schede attualmente aperte (in modo che le schede di chiusura non rovinino il codice, ecc.)?

Il codice che hai citato utilizza la recente finestra del browser, quindi le schede di chiusura non influenzeranno l'analisi. La chiusura della finestra del browser interromperà il carico, ma è possibile gestirlo (rilevare che il carico è stato interrotto e riavviarlo in un'altra finestra, ad esempio) e non accade molto spesso.

Hai bisogno di una finestra DOM per far funzionare correttamente l'iframe, quindi al momento non c'è una soluzione pulita (se ti piace usare l'analizzatore di mozilla).





dom