2012-06-12 15 views
7

Non sono affatto un programmatore, quindi mi dispiace in anticipo, ma dopo aver cercato sul web non riesco a trovare una risposta.Javascript funziona in Safari ma non Chrome o Firefox

Sto cercando di effettuare la ricerca di spazio pubblicitario da this website e inserirlo in una scheda di Facebook. Ho afferrato il codice dal sito web e modificato le intestazioni e i piè di pagina, che non volevo, in TextEdit. Sto solo cercando di prendere la parte di ricerca dell'inventario.

Quando l'ho provato in Safari sembrava funzionare. La ricerca di inventario è arrivata e tutti i pulsanti e i filtri hanno funzionato perfettamente e quando andavo su una pagina diversa le intestazioni e i piè di pagina erano spariti e solo la ricerca dell'inventario era lì - perfetta.

Tuttavia, se testato in Chrome e Firefox, i pulsanti e i filtri non hanno funzionato affatto e non è possibile superare la prima pagina o applicare filtri.

Così ho deciso di andare al sito (la prima pagina della ricerca dell'inventario come il link sopra) e salvare il codice sorgente sul mio desktop per vedere se quando l'ho aperto in Chrome o Firefox se funzionasse, e non funzionava, nessun pulsante o filtro funzionava, bloccato sulla prima pagina. Ma ha funzionato in Safari.

Cosa significa? Dovrei arrendermi ora? Includerei il codice ma è il più lungo che abbia mai visto. Tutti i test del codice che ho fatto attraverso TextEdit.

modificare:
Qui ci sono gli errori in Chrome:

Uncaught SyntaxError: imprevisto Token < Chevy.html: 4608 XMLHttpRequest non può caricare http://www.erikschevrolet.com/searchVehicles.ajax. L'origine null non è consentita da Access-Control-Allow-Origin.
Errore non rilevato: XmlRenderEngine => errore sconosciuto bundle.js: 1 XMLHttpRequest non può caricare http://www.erikschevrolet.com/searchVehicles.ajax. L'origine null non è consentita da Access-Control-Allow-Origin.
Errore non rilevato: XmlRenderEngine => errore sconosciuto bundle.js: 1 XMLHttpRequest non può caricare http://www.erikschevrolet.com/searchVehicles.ajax. L'origine null non è consentita da Access-Control-Allow-Origin.
Errore non rilevato: XmlRenderEngine => errore sconosciuto bundle.js: 1

+4

Ci sono errori in Chrome e ff? Se ci sono, per favore includili. Inoltre, la pagina sembra essere generata su un server. In tal caso, sarebbe più semplice eseguire l'intera operazione lato server non includendo i file di intestazione, ecc. – tcooc

+2

Non sei sicuro del tuo caso d'uso esatto, ma fai attenzione che quello che stai facendo qui è legale. Il codice di quel sito è di proprietà di "Chrome Systems Corporation" e sarebbe illegale rubare e riutilizzare il loro codice senza il loro permesso. Altrimenti, buona domanda :) – jwegner

risposta

1

Questi avvisi di Chrome non sono pertinenti qui. Gli errori sopra riportati riguardano problemi di origine incrociata. A causa di cose davvero malvagie in cui può risultare l'accesso a risorse remote da JavaScript, i browser moderni li bloccano se non esplicitamente consentito.

Ad esempio, la maggior parte dei contenuti da http://example.com non è accessibile tramite javascript nel dominio http://example.net. Poiché hai scaricato la maggior parte dei file e stai cercando di eseguirli localmente, ma alcuni di essi si riferiscono ai file con il dominio http://www.erikschevrolet.com, non è consentito.

AFAIK non esiste un modo veramente semplice per evitare questo problema; la soluzione più sicura potrebbe farti scaricare tutti i file usati e modificare manualmente i riferimenti a con riferimenti al tuo percorso locale. In alternativa, si può impostare il valore withCredentials di XMLHttpRequest per vera (ma dato che non sei un programmatore, si può davvero rovinare tutto ...) come questo (ad esempio da http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/):

var request = new XMLHttpRequest(); 
var url = 'http://bar.other/resources/credentialed-content/'; 
function callOtherDomain(){ 
    if(request) 
    { 
    request.open('GET', url, true); 
    request.withCredentials = "true"; 
    request.onreadystatechange = handler; 
    request.send(); 
    } 
} 

E anche questo potrebbe non ottenere il risultato previsto poiché molti di questi file sono probabilmente generati dinamicamente sul server e sono soggetti a modifiche.

+0

Grazie! Cercherò di cambiare i riferimenti me stesso, o estenderò il progetto a qualcuno che sa cosa stanno facendo! –

+1

Se sei soddisfatto della mia risposta, potresti inversiarla e accettarla? ;) – mgol

+0

Usa JSONP per effettuare richieste cross domain o semplicemente farlo sul server piuttosto che in JS – sciritai

0

Sembra che tu abbia un problema nella lettura di un file xml o di testo in javascript con uno schema di file di caricamento specifico. accade nei browser in cui le richieste di opere http, qui, in questo caso si può provare qualcosa di simile a lavorare in javascript,

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

questo agirà sul cromo safari firefox così provare questo.

Problemi correlati