9

Tôi đang thực hiện một số thử nghiệm với các trình duyệt khác nhau. Tôi đang sử dụng cho Selenium :: Remote :: Driver. Tôi muốn kiểm tra xem tôi có tìm thấy một số mục trong danh sách trang web của tôi không, danh sách từ khung công tác js (tạo lưới). Đối với trường hợp này, tôi phải sử dụng đoạn mã Javascript được Selenium :: Remote :: Driver cho phép. tôi đã làm theo mã:findIndex() vấn đề phương pháp với 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); 

Nó hoạt động tốt với chrome và firefox. Vấn đề của tôi là mã của tôi không hoạt động với internet.explorer vì phương thức findIndex() chỉ được hỗ trợ bởi 12 và sau. Và vì một số lý do tôi phải sử dụng internet.explorer 11.

Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể làm khác đi để có được chỉ mục của tôi cho mọi trình duyệt?

Cảm ơn

Trả lời

29

Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể làm cách khác nhau để có được chỉ số của tôi cho mọi trình duyệt?

Bạn có ít nhất ba lựa chọn:

  1. Shim Array#findIndex; MDN có một shim/polyfill bạn có thể sử dụng.

  2. Sử dụng một cái gì đó khác mà IE11 có, chẳng hạn như Array#some:

    var index = -1; 
    items.some(function(el, i) { 
        if (el.name == paramProgramName) { 
         index = i; 
         return true; 
        } 
    }); 
    
  3. Sử dụng cái gì khác mà ngay cả IE8 có, chẳng hạn như for:

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

Cảm ơn bạn đã trả lời @ T.J. Đám đông lúc đầu! Tôi không phải là rất familar với Shim nhưng tôi sẽ xem xét anyway. Đối với cách thứ hai, tôi sẽ kiểm tra nó và tôi sẽ trả lời bạn một câu trả lời. – Chaoui05

+0

Thật hoàn hảo. Cảm ơn một lần nữa – Chaoui05

+0

:). Xong rôi ! nó trả lời cho câu hỏi của tôi – Chaoui05

0

Cách tốt hơn:

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; 
} 

Cách sử dụng:

findArrayIndex(cachedAnnouncementsArray, function(o){return o.ID == 17;}); 
Các vấn đề liên quan