it-swarm.dev

findIndex () - Methodenproblem mit dem Internet Explorer

Ich mache einige Tests mit verschiedenen Browsern, die das Modul Selenium::Remote::Driver verwenden.

Ich möchte prüfen, ob ich etwas in meiner Website-Liste finde, eine Liste aus einem Framework-JavaScript (das Raster erzeugt). Für diesen Fall muss ich das von Selenium::Remote::Driver zugelassene JavaScript-Snippet verwenden.

Ich habe den folgenden Code geschrieben

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

Es funktioniert gut mit Chrome und Firefox, aber nicht mit Internet Explorer, da die findIndex-Methode nur von Version 12 und folgenden unterstützt wird. Aus irgendeinem Grund muss ich Version 11 verwenden.

Was kann ich anders machen, um von jedem Browser einen Index zu erhalten?

17
Chaoui05

Meine Frage ist also, wie kann ich den Index für jeden Browser anders machen?

Sie haben mindestens drei Möglichkeiten:

  1. Shim Array#findIndex; MDN hat eine Shim/Polyfill, die Sie verwenden können.

  2. Verwenden Sie etwas anderes als IE11, z. B. Array#some (das sogar IE9 hat):

    var index = -1;
    items.some(function(el, i) {
        if (el.name == paramProgramName) {
            index = i;
            return true;
        }
    });
    
  3. Verwenden Sie etwas anderes als IE8, z. B. for:

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

sie können http://underscorejs.org/ verwenden, 

wie benutzt man:

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