2015-04-03 1 views
13

Ho una funzione di sotto della quale funziona bene in Chrome, ma la sua dando l'errore sotto in IE10 SCRIPT438: Object doesn't support property or method 'endsWith'SCRIPT438: L'oggetto non supporta la proprietà o il metodo 'EndsWith' in IE10

function getUrlParameter(URL, param){ 
    var paramTokens = URL.slice(URL.indexOf('?') + 1).split('&'); 
    for (var i = 0; i < paramTokens.length; i++) { 
    var urlParams = paramTokens[i].split('='); 
    if (urlParams[0].endsWith(param)) { 
     return urlParams[1]; 
    } 
    } 
} 

Qualcuno può dirmi che cosa è sbagliato con questa funzione?

+4

Leggere la tabella di supporto: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith – epascarello

+1

'endsWith' semplicemente non è supportato da IE10. –

+0

@FelixKling Come faccio a farlo funzionare in IE10? – RanPaul

risposta

31

Implementato endsWith come di seguito

String.prototype.endsWith = function(pattern) { 
    var d = this.length - pattern.length; 
    return d >= 0 && this.lastIndexOf(pattern) === d; 
}; 
+7

Avvolgi con 'if (! String.prototype. endsWith) 'e nota che' endsWith' prende un argomento extra, 'position'" Facoltativo. Cerca all'interno di questa stringa come se questa stringa fosse solo così lunga, per impostazione predefinita la lunghezza effettiva di questa stringa, fissata all'interno dell'intervallo stabilito dalla lunghezza di questa stringa. " –

+1

Salvato il mio giorno. Ti meriti una taglia. –

+0

Salvato la mia giornata !!! –

11

Si dovrebbe utilizzare il seguente codice per implementare endsWith nei browser che non lo supportano:

if (!String.prototype.endsWith) { 
    String.prototype.endsWith = function(searchString, position) { 
     var subjectString = this.toString(); 
     if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { 
     position = subjectString.length; 
     } 
     position -= searchString.length; 
     var lastIndex = subjectString.lastIndexOf(searchString, position); 
     return lastIndex !== -1 && lastIndex === position; 
    }; 
} 

Questo è direttamente Mozilla Developer Network ed è conforme agli standard , a differenza dell'altra risposta data finora.