web-dev-qa-db-fra.com

problème de méthode findIndex () avec Internet Explorer

Je fais des tests avec différents navigateurs en utilisant le module Selenium::Remote::Driver .

Je voudrais vérifier si je trouve un élément dans la liste de mon site Web, liste à partir d'un framework JavaScript (qui crée des grilles). Pour ce cas, je dois utiliser l'extrait de code JavaScript autorisé par Selenium::Remote::Driver.

J'ai écrit le code suivant

$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);

Cela fonctionne bien avec Chrome et Firefox, mais pas avec Internet Explorer, car la méthode findIndex est uniquement prise en charge par la version 12 et les suivantes. Pour une raison quelconque, je dois utiliser la version 11.

Que puis-je faire différemment pour obtenir un index de chaque navigateur?

17
Chaoui05

Ma question est donc: comment puis-je faire différemment pour obtenir mon index pour chaque navigateur?

Vous avez au moins trois options:

  1. Shim Array#findIndex; MDN a un shim/polyfill que vous pouvez utiliser.

  2. Utilisez quelque chose d'autre que IE11, tel que Array#some (que même IE9 a):

    var index = -1;
    items.some(function(el, i) {
        if (el.name == paramProgramName) {
            index = i;
            return true;
        }
    });
    
  3. Utilisez quelque chose d'autre que même IE8, tel que for:

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

vous pouvez utiliser http://underscorejs.org/

comment utiliser:

var index = _.findIndex(objects, function(item){
return item.name == programName;
});
0
Hendra SYP