2012-12-27 2 views
9

stessa domanda here ma ho bisogno di andare a URL del locale in FirefoxVai a URL locale con JavaScript

ho provato con il codice come

var url = "file:///E:/Test/Test.htm"; 
window.location.href = url; 

ma id non ha funzionato. Provato per andare con window.location = url; e anche provato con url = "file://E:/Test/Test.htm"; (doppio "/" anziché triplo "/") e ancora non funziona.

Grazie

risposta

11

Quando provo questa:

window.location.href = "file:///C:/Users/Cerbrus/Documents/SomeFile.js" 

(Sì, è un percorso valido.)

Chrome mi butta questo errore:

Not allowed to load local resource: file:///C:/Users//Documents/File.js

Questo è perché JavaScript non ha accesso a locale file (a causa del fatto che è in modalità sandbox) e stai impostando il nuovo URL con JavaScript.
"SandBoxed" indica che una tecnologia ha limitato (o non) l'accesso al di fuori di un certo insieme di limiti. Nel caso dei browser, ciò significa che il codice che viene eseguito sulla pagina non può accedere ai file sul tuo sistema (altrimenti sarebbe facile "rubare" i dati, semplicemente dando un'occhiata al file system dell'utente).

Tuttavia,

dire che ho 2 file:

C:/Test/Test.htm
C:/Test/Test1.htm

Test.htm contiene un'unica questo:

<script> 
    window.location = "file:///C:/Test/Test1.htm"; 
</script> 

Questo effettivamente reindirizzare a Test1.htm, dal momento che il file di destinazione è nello stesso dominio da cui proviene il file sorgente.

+0

(Sidenote: Non sono del tutto convinto che "[Same Same Policy] (https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript)" non abbia un ruolo qui, dato che noi anche cambiando il protocollo in 'file:'.) – Cerbrus

+2

Risposta stupenda! Quindi lo script non funziona da una pagina Web ospitata ma funziona da un file htm locale. Ma che mi dici di Bookmarklets? Ho bisogno del mio script in un booklet. Non ha funzionato per me, ma Bookmarlkets sono locali, qual è la ragione per questo? E grazie anche alle altre persone che hanno risposto. – BearCode

+0

Non sembra funzionare neanche, @BearBear: 'javascript: (function() {window.location =" file: /// C: /Test/Test1.htm ";}());' < - Questo dà lo stesso errore. Sto indovinando l'esempio di 'Test.htm' che ho citato, perché il file sorgente è già locale, quindi il' file:/ 'è incluso nella sandbox. – Cerbrus

5

Credo che la sua non ha permesso di caricare risorsa locale da JavaScript

A meno che non si dispone di un locale in esecuzione di server http:

var url = "http://localhost/MySite/Default.aspx"; 
window.location.href = url; 

funzionerà

1

È non può accedere al file dal sistema locale. Poiché il browser funziona nella modalità sandbox e non è possibile violare la sandbox e raggiungere il file system locale poiché violerebbe la sicurezza. Provare a caricare direttamente utilizzando una richiesta AJAX altrimenti ciò che si sta tentando di fare non è possibile a causa delle restrizioni sandbox e inoltre non è conforme alle politiche di sicurezza.

+0

Cosa ti fa pensare che una richiesta AJAX possa leggere i file locali? – Cerbrus

+0

se sto aprendo il file html come file: /// C: /Users/arun.ak/Desktop/somting.html si applica la stessa regola? –

+0

@ArunKillu: Sì. JavaScript non può accedere a quel file da un dominio diverso. – Cerbrus

-4
window.open(url); // here url can be anything 
+2

Hai provato questo? Non funziona. – Cerbrus