9

Sto facendo alcuni test con diversi browser. Sto usando per quel Selenium :: Remote :: Driver. Vorrei verificare se trovo qualche elemento nel mio elenco di siti web, elencato da un framework js (che crea le griglie). In questo caso, devo usare lo snippet di Javascript permesso da Selenium :: Remote :: Driver. ho fatto seguente codice:findIndex() problema di metodo con internet explorer

$script = q{ 
     var paramProgramName = arguments[0]; 
     var list = $('#c-list').dxList('instance'); 
     var items = list.option('items'); 
     var index = items.findIndex(function(el){ return el.name==paramProgramName; }); 
     list.selectItem(index); 
     return ; 
}; 
$driver->execute_script($script,$programName); 

Funziona con Chrome e Firefox. Il mio problema è che il mio codice non funziona con internet.explorer perché il metodo findIndex() è supportato solo da i.e 12 e seguenti. E per qualche ragione devo usare internet.explorer 11.

Quindi la mia domanda è come posso fare diversamente per ottenere il mio indice per ogni browser?

Grazie

risposta

29

Quindi la mia domanda è come posso fare in modo diverso per ottenere il mio indice per tutti i browser?

avete almeno tre opzioni:

  1. Shim Array#findIndex; MDN ha uno shim/polyfill che è possibile utilizzare.

  2. Usa qualcos'altro che IE11 ha, come ad esempio Array#some:

    var index = -1; 
    items.some(function(el, i) { 
        if (el.name == paramProgramName) { 
         index = i; 
         return true; 
        } 
    }); 
    
  3. Usa qualcos'altro che anche IE8 ha, come ad esempio for:

    var index = -1; 
    for (var i = 0; i < items.length; ++i) { 
        if (items[i].name == paramProgramName) { 
         index = i; 
         break; 
        } 
    } 
    
+0

Grazie per la risposta @ T.J. All'inizio Crowder! Non sono molto familiare con Shim, ma darò un'occhiata comunque. Per il secondo modo, lo metterò alla prova e ti ricambierò una risposta. – Chaoui05

+0

È perfetto. Grazie ancora – Chaoui05

+0

:). E 'fatto ! ha risposto alla mia domanda – Chaoui05

0

Un modo migliore:

var findArrayIndex = function (array, predicateFunction) { 
    var length = array == null ? 0 : array.length; 
    if (!length) { 
     return -1; 
    } 
    var index = -1; 
    for (var i = 0; i < array.length; ++i) { 
     if(predicateFunction(array[i])) { 
      index = i; 
      break; 
     } 
    } 
    return index; 
} 

Utilizzo:

findArrayIndex(cachedAnnouncementsArray, function(o){return o.ID == 17;});