2017-10-27 4 views
0

Ich bin relativ neu in Javascript.Override Hosted Javascript-Funktion

Ich versuche derzeit herauszufinden, wie Sie eine JavaScript-Funktion von einem gehosteten JS überschreiben.

Hintergrund:

Wir werden nicht in der Lage sein, Amex Kartenzahlung (Bank Ausgabe) zu akzeptieren. Unser eingebettetes Spendenformular erkennt jedoch immer noch Amex-Karten, wenn die Kartennummer eingegeben wird.

Mithilfe von Chrome wurde diese Funktion gefunden, von der ich vermute, dass sie zur automatischen Erkennung von Kartentypen verwendet wird./

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

Will ich die "o =/^ 3 [47] /" auf etwas anderes oder es kann nicht erkannt werden vollständig so Karten Amex entfernen außer Kraft setzen können, dann in HTML einfügen?

+0

Erkennen! = Akzeptieren. Die Änderung dieses Code-Stücks wird kaum ausreichen. Sie sollten wirklich den Service kontaktieren, der das "eingebettete Spendenformular" zur Verfügung stellt und sie fragen, was zu tun ist. – Bergi

Antwort

0

Hallo vielleicht ist eine Lösung, Ihre eigene if-Anweisung zu machen, wenn amex zurückgegeben wird, so dass Sie amex auf unbekannt setzen werden.

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

Dies wird Ihnen helfen, das Problem zu lösen. Ist das nicht was du willst? Sie können auch die Funktion dieses neu schreiben:

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

Dies wird nur möglich sein, wenn Sie diese Funktion selbst aufrufen. Wenn es von einem Callback oder etwas aus dem gehosteten JS aufgerufen wird, wird es nicht funktionieren. Wenn es sich um ein eigenständiges Skript handelt, können Sie das JS einfach als Ihr eigenes hosten.

+0

Ja, es ist ein Rückruf vom gehosteten JS. Sie sagen jedoch, indem Sie den Code kopieren, den Sie erstellt haben und ihn in platzieren, wird es funktionieren? – Fuzz

+0

Auch hier ist das Embed JS. Kann hier etwas gemacht werden? window.bboxInit = Funktion() { bbox.showForm ('039de06f-b1e1-4704-ab40-ce5942a27a32'); }; (function() { var e = document.createElement ('Skript'); e.async = true; e.src = 'https://bbox.blackbaudhosting.com/webforms/bbox-min.js'; document.getElementsByTagName ('Kopf') [0] .appendChild (e); }()); – Fuzz

+0

Hallo, ich weiß nicht, ob es funktioniert, weil ich das Webformular nicht laden kann. Aber ich schlage vor, dass Sie in dem Formular, das Sie auf Ihrer Website platzieren, den oben angegebenen Scheck ausfüllen. Damit du das gleiche für amex wie für unbekannt machst. Wenn das Formular geladen ist, können Sie Javascript verwenden, um den Wert im Formular zu überprüfen. Wenn der Wert amex ist, können Sie den Wert in unbekannt ändern. So wird der Wert immer unbekannt sein, wenn amex eingefügt wird –