2017-10-27 8 views
0

저는 비교적 자바 스크립트를 처음 사용합니다.Hosted Javascript 기능 재정의

저는 현재 호스팅 된 JS에서 JavaScript 함수를 재정의하는 방법을 찾으려고합니다.

배경 :

우리는 아멕스 카드 결제 (은행 발행)를 받아 들일 수 없습니다. 그러나 카드 번호가 삽입되면 우리의 임베디드 기부 양식은 Amex 카드를 계속 감지합니다.

크롬을 사용하여이 기능을 발견했습니다.이 기능은 카드 유형 자동 감지에 사용되는 것 같습니다./

function a(n) { 
 
    var m = /^4/, 
 
     i = /(^5[1-5])|^(222[1-8][0-9]{2}|2229[0-8][0-9]|22299[0-9]|22[3-9][0-9]{3}|2[3-6][0-9]{4}|27[01][0-9]{3}|2720[0-8][0-9]|27209[0-9])/, 
 
     o = /^3[47]/, 
 
     l = /^6(?:011|5|4[4-9]|22(?:1(?:2[6-9]|[3-9])|[2-8]|9(?:[01]|2[0-5])))/, 
 
     h = /^(?:5[0678]|6304|6390|67)/, 
 
     j = /^3(?:0[0-5]|[68][0-9])[0-9]/, 
 
     k = /^(4026|417500|4405|4508|4844|4913|4917)/; 
 
    if (k.test(n)) { 
 
     return "electron" 
 
    } else { 
 
     if (m.test(n)) { 
 
      return "visa" 
 
     } else { 
 
      if (i.test(n)) { 
 
       return "mastercard" 
 
      } else { 
 
       if (o.test(n)) { 
 
        return "amex" 
 
       } else { 
 
        if (l.test(n)) { 
 
         return "discover" 
 
        } else { 
 
         if (h.test(n)) { 
 
          return "maestro" 
 
         } else { 
 
          if (j.test(n)) { 
 
           return "diners" 
 
          } else { 
 
           return "unknown" 
 
          } 
 
         } 
 
        } 
 
       } 
 
      } 
 
     } 
 
    } 
 
}

나는, 뭔가에 "O =/^ 3 [47] /"을 무시하거나 완전히 그래서 아멕스 카드는 감지 할 수없는 그것을 제거 할 수있을 것 HTML 내부에 삽입 하시겠습니까?

+0

검색 중! = 수락 중입니다. 이 코드를 변경하는 것만으로는 충분하지 않습니다. "임베디드 기부 양식"을 제공하는 서비스에 연락하여 무엇을해야하는지 물어보십시오. – Bergi

답변

0

아마도 amex가 반환되는 경우 if 문을 사용하여 if 문을 작성하여 amex를 unknown으로 설정하는 것이 해결책입니다.

var card = function a(n); 
if(a === 'unknown' || a === 'amex'){ 
DoStuff(); 
}else{ 
DoRecognizedstuff(); 
} 

이렇게하면 문제를 해결하는 데 도움이됩니다. 이게 당신이 원하는 것이 아닌가요? 또한이에 기능을 다시 작성할 수 있습니다 :이 기능을 직접 호출하는 경우

function a(n) { 
 
    var m = /^4/, 
 
     i = /(^5[1-5])|^(222[1-8][0-9]{2}|2229[0-8][0-9]|22299[0-9]|22[3-9][0-9]{3}|2[3-6][0-9]{4}|27[01][0-9]{3}|2720[0-8][0-9]|27209[0-9])/, 
 
     l = /^6(?:011|5|4[4-9]|22(?:1(?:2[6-9]|[3-9])|[2-8]|9(?:[01]|2[0-5])))/, 
 
     h = /^(?:5[0678]|6304|6390|67)/, 
 
     j = /^3(?:0[0-5]|[68][0-9])[0-9]/, 
 
     k = /^(4026|417500|4405|4508|4844|4913|4917)/; 
 
    if (k.test(n)) { 
 
     return "electron" 
 
    } else { 
 
     if (m.test(n)) { 
 
      return "visa" 
 
     } else { 
 
      if (i.test(n)) { 
 
       return "mastercard" 
 
      } else { 
 
       if (l.test(n)) { 
 
         return "discover" 
 
        } else { 
 
         if (h.test(n)) { 
 
          return "maestro" 
 
         } else { 
 
          if (j.test(n)) { 
 
           return "diners" 
 
          } else { 
 
           return "unknown" 
 
          } 
 
         } 
 
        } 
 
       } 
 
      } 
 
     } 
 
    }

에만 가능합니다. 그것은 콜백이나 호스팅 JS에서 무언가에 의해 호출되면 작동하지 않습니다. 이 스크립트가 독립형 스크립트 인 경우 JS를 직접 호스팅 할 수 있습니다.

+0

예, 호스팅 된 JS의 콜백입니다. 그러나 여러분이 만든 코드를 복사하여 안에 넣으면 작동할까요? – Fuzz

+0

또한 여기에 embed JS가 있습니다. 여기서 뭔가를 만들 수 있습니까? window.bboxInit = function() { bbox.showForm ('039de06f-b1e1-4704-ab40-ce5942a27a32'); }; (function() { var e = document.createElement ('script'); e.async = true; e.src = 'https://bbox.blackbaudhosting.com/webforms/bbox-min.js'; document.getElementsByTagName ('head') [0] .appendChild (e); }()); – Fuzz

+0

안녕하세요, webform을로드 할 수 없기 때문에 작동하는지 알 수 없습니다. 그러나 제가 제안하는 것은 당신이 당신이 위에 만든 수표를 당신의 웹 사이트에 올려 놓는 형태입니다. 그래서 당신은 amex에 대해 같은 것을 알 수 없도록 할 것입니다. 폼이로드되면 자바 스크립트를 사용하여 폼의 값을 확인할 수 있습니다. 값이 amex이면 값을 알 수 없음으로 변경할 수 있습니다. amex가 입력되면 값을 알 수 없습니다. –