Come accedere al contenuto di testo semplice richiamato tramite in JavaScript?

Quando si utilizza , dove l’URL si riferisce a un file di testo semplice, c’è un modo per accedere al contenuto del file in JavaScript? Il file viene trasferito nel browser, ma il valore della proprietà innerHTML dell’elemento di script non viene modificato (rimane la stringa vuota). Ispezionare il nodo dell’elemento nel DOM non sembra rivelare alcuna proprietà attraverso la quale il contenuto ricevuto possa essere trovato.

So che XMLHTTPRequest può essere usato al posto, ma sono interessato al problema del perché i browser recuperino i dati nel modo in cui li ho descritti ma non sembrano offrire alcun accesso ad essi.

Innanzitutto, l’attributo text di HTMLScriptElement è il metodo preferito per accedere al testo di un elemento inline. DOM-Level-2 e HTML5: 4.11.1 entrambi indicano che uno script dovrebbe avere un text attributo che contiene il testo interno degli script:

Il text attributo IDL deve restituire una concatenazione dei contenuti di tutti i nodes di testo che sono figli dell'elemento di script (ignorando qualsiasi altro nodo come commenti o elementi), nell'ordine dell'albero. Al momento dell'impostazione, deve agire allo stesso modo dell'attributo IDL textContent .

Poiché l'elemento è vuoto (hai specificato un'origine esterna), text , textContent e innerHTML sono vuoti. Questo perché l'attributo text è impostato solo in script inline:

Se lo script è in linea e il tipo del blocco di script è un linguaggio basato su testo:

Il valore dell'attributo IDL di text nel momento in cui il flag "già avviato" dell'elemento è stato impostato per ultimo è l'origine dello script.

Quindi non è ansible includere un text/plain esterni usando questo metodo.

Guarda anche:

  • W3C: HTML5: 4.11.1 L'elemento di script: attributo di testo e l'esempio per la mappa di gioco:
        

Si noti che se questo fosse supportato, fornirebbe un enorme buco di sicurezza e un mezzo per aggirare protezioni cross-site scripting che proteggono json e altri dati. In sostanza, la mia brutta pagina web (nasty.com, ad esempio) potrebbe accedere ai tuoi dati privati ​​che sono protetti dai cookie caricandoli tramite un tag script. per esempio

  

Poiché i cookie per supersecure.com verranno automaticamente inviati con la richiesta (come nel caso in cui si richiedono risorse), il sito sicuro restituisce semplicemente i dati (ad esempio l'elenco dei documenti privati) poiché non potrebbe facilmente distinguere la richiesta separatamente da uno da una richiesta Ajax dalla sua pagina Web legittima. Questo buco non esiste con Ajax, dal momento che il browser impedisce semplicemente a una pagina di nasty.com di effettuare una richiesta Ajax su supersecure.com, grazie alla stessa politica di origine.

Ovviamente, non ci sono problemi di sicurezza con i dati in linea.

Dopo diversi giorni di ricerca della stessa domanda, ho trovato diversi riferimenti al seguente codice:

       

Il codice precedente accede effettivamente al file txtData.txt (a condizione che esista) e lo scarichi in un come testo predefinito. Per qualche ragione, nessuna delle risposte precedenti menziona che funziona, presumo perché la domanda sembra implicare specificamente il tag (per una tecnica simile potrebbe non essere disponibile, non ho controllato); tuttavia, continuo a pensare che valga la pena di supporre che la tua query pretenda la questione più generale di ottenere un file .txt esterno (o se qualcun altro che si imbatte in questa pagina sta cercando l’anwser di detta domanda), soprattutto perché mi ci sono volute delle ore per cercarlo , quindi credo sia plausibile che la risposta fosse semplicemente difficile da produrre.

Sì, no, non penso che tu possa ottenere il contenuto del testo in questo modo. È principalmente perché utilizzerai gli elementi di accesso dom per ottenere del testo che non è mai stato realmente inserito nella dom stessa.

Ho provato alcune opzioni e non hanno funzionato. Non ho una solida ragione per cui non sarai in grado di trovarlo, ma il motivo per cui mi sto arrendendo / pensando in questo modo è perché anche l’ispettore WebKit che sto usando non ha una rivelazione a triangolo accanto a un tag script-src. Quello che fa è che converte l’src in un link su cui puoi cliccare e poi usa Ajax o qualsiasi altra cosa per leggere quel testo dal server.