首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >覆盖宿主Javascript函数

覆盖宿主Javascript函数
EN

Stack Overflow用户
提问于 2017-10-27 00:20:36
回答 1查看 42关注 0票数 0

我对javascript比较陌生。

我目前正在研究如何从托管的JS中重写javascript函数。

背景:

我们将无法接受美国运通卡付款(银行发行)。然而,我们嵌入的捐赠表格仍然检测当卡号插入时美国运通卡。

使用Chrome,找到了这个功能,我猜是用来自动检测卡片类型的./

代码语言:javascript
运行
复制
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=/^347/“覆盖到其他东西,或者完全删除它,以便无法检测到Amex卡,然后在HTML中插入?

EN

回答 1

Stack Overflow用户

发布于 2017-10-27 01:33:01

你好,如果返回amex,可能有一个解决方案是创建您自己的if语句,这样您就可以将amex设置为unknown。

代码语言:javascript
运行
复制
var card = function a(n);
if(a === 'unknown' || a === 'amex'){
DoStuff();
}else{
DoRecognizedstuff();
}

这将帮助你解决问题。这不是你想要的吗?您还可以将函数重写为:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46965699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档