2014-04-15 7 views
5

jQuery BBQ noob domanda: ho scaricato jQuery BBQ 1.2.1 e sto provando a usarlo con jQuery 2.1.0. BBQ funziona nel senso che fa ciò che voglio che faccia, ma ho notato un messaggio di errore nella console. L'ho rintracciato in quello che sembra essere un problema di compatibilità. Ecco una pagina HTML di esempio che genera l'errore:jQuery BBQ genera un errore con jQuery 2

<!DOCTYPE HTML> 
<html> 
    <head> 
     <title>example</title> 
    </head> 
    <body> 
     example 
    </body> 
    <script src="../js/lib/jquery-2.1.0.min.js"></script> 
    <script src="../js/lib/jquery.ba-bbq.min.js"></script> 
</html> 

In Firefox l'errore console è TypeError: f is undefined. In Chrome l'errore è diverso: Uncaught TypeError: Cannot read property 'msie' of undefined.

Ho notato che jQuery BBQ è piuttosto vecchio. C'è un nuovo giro di jQuery BBQ? O c'è qualche nuova libreria sostitutiva?

UPDATE

sto usando jQuery barbecue perché una ricerca su google mi ha mandato a questa domanda in precedenza risposto: Parsing URL hash/fragment identifier with JavaScript. Il vero problema che sto cercando di risolvere è lo stesso della domanda collegata: rispondere ai cambiamenti nella porzione di hash dell'URI e analizzare quel frammento.

Si scopre che per i miei scopi (finora), posso eliminare jQuery barbecue e scrivere un paio di righe di codice per afferrare la stringa hash (e rimuovere il simbolo cancelletto):

$(window).bind('hashchange', function() { 
     var hashString = window.location.hash || ''; 
     hashString = hashString.replace("#",''); 
     myEventHandler(hashString); 
    }); 

Così per ora funzionerà. È piuttosto semplice ed è meno dipendente dal modulo, quindi vantaggioso. Suppongo che sia per questo che non ci sono state risposte a una domanda di jQuery-BBQ, eh?

+0

possibile duplicato del [errore browser.msie dopo l'aggiornamento a jQuery 1.9.1] (http://stackoverflow.com/questions/14892095/browser-msie-error-after-update-to-jquery-1-9-1) – Phil

+1

Sono rispettosamente in disaccordo. Sarebbe un duplicato se la domanda fosse stata posta dal manutentore di jQuery-BBQ - e apparentemente non ce n'è uno. E mentre il patching a mano di un componente di terze parti non è fuori dal tavolo, è molto più semplice non usare jQuery-BBQ e invece usare 'window.location.hash'. –

risposta

3

Sono felice che il tuo problema sia stato risolto (1 anno fa!). Ma per chiunque abbia questo problema:

Come è stato possibile vedere in this answer questo problema è causato da $ .browser che è stato deprecato nella versione 1.3 e rimosso in 1.9.

ma è possibile risolvere questo semplicemente. solo open source bbq jquery e la ricerca di f.msie (utilizzata come h = f.msie) e sostituirlo con:

(navigator.appName == 'Microsoft Internet Explorer') ? true : false 

(ora è necessario disporre h = (navigator.appName == 'Microsoft Internet Explorer') ? true : false)

0

La sintassi che ha funzionato per me è stato :

h = (navigator.appName == 'Microsoft Internet Explorer' ? true : false) 

o se utilizzato come parte di un "se" interruttore ...

(h = (navigator.appName == 'Microsoft Internet Explorer' ? true : false))