怎么快速定位是哪行js阻止我提交表单

怎么快速定位是哪行js阻止我提交表单,表单有十几个输入框,有一个格式写错了,但是所有都是红框,代码不是我写的,我想在浏览器里debug一下js,看看是哪一行阻止了我

全部打上断点然后挨个debug就行

以下内容引用自GPT,有用望采纳:

要快速定位阻止表单提交的代码行,您可以使用浏览器的开发者工具来调试JavaScript代码。以下是在大多数现代浏览器上使用常见的调试方法:

  1. 打开您要调试的网页,并确保表单已经加载。

  2. 按下键盘上的 F12 键或右键点击页面上的任意位置,然后选择“检查”或“检查元素”选项。

  3. 在开发者工具中,找到并选择“控制台”选项卡。这是显示JavaScript错误和日志消息的地方。

  4. 在您提交表单后,观察控制台中的错误消息和警告。如果有JavaScript错误,它们将显示在这里。点击错误消息可跳转到对应的代码行。

  5. 如果没有明显的错误消息,您可以使用“断点”来暂停代码执行并逐行调试。在“调试”选项卡中,在代码左侧选择要设置断点的行,通常在靠近表单提交相关的代码位置。

  6. 刷新页面并提交表单。代码执行将暂停在设置的断点处。您可以使用调试工具栏上的“继续”按钮逐行执行代码。

  7. 当代码执行到阻止表单提交的行时,您可以观察在表单输入框上发生的变化。可能会有某些条件或验证函数返回false或阻止了提交。

通过调试工具,您可以定位到具体的代码行,并观察变量的值、条件的结果等信息,从而找出导致表单提交被阻止的问题所在。请注意,具体操作步骤可能因浏览器和开发者工具版本而有所不同,但大部分现代浏览器都提供类似的调试工具和功能。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7519109
  • 除此之外, 这篇博客: 解密网易云音乐评论js加密参数,实现分词处理制作词云图中的 步骤06: debug核心方法d 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    在12896行打一个断点, 我们查看一下四个参数究竟是什么东东
    在这里插入图片描述
    参数d:
    {“rid”:“R_SO_4_1379057027”,“offset”:“100”,“total”:“false”,“limit”:“20”,“csrf_token”:""}

    参数e:
    010001

    参数f:
    00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7

    参数g:
    0CoJUm6Qyw8W8jud

    关键的源码

     function a(a) {
            var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
            for (d = 0; a > d; d += 1)
                e = Math.random() * b.length,
                e = Math.floor(e),
                c += b.charAt(e);
            return c
        }
        function b(a, b) {
            var c = CryptoJS.enc.Utf8.parse(b)
              , d = CryptoJS.enc.Utf8.parse("0102030405060708")
              , e = CryptoJS.enc.Utf8.parse(a)
              , f = CryptoJS.AES.encrypt(e, c, {
                iv: d,
                mode: CryptoJS.mode.CBC
            });
            return f.toString()
        }
        function c(a, b, c) {
            var d, e;
            return setMaxDigits(131),
            d = new RSAKeyPair(b,"",c),
            e = encryptedString(d, a)
        }
        function d(d, e, f, g) {
            var h = {}
              , i = a(16);
            return h.encText = b(d, g),
            h.encText = b(h.encText, i),
            h.encSecKey = c(i, e, f),
            h
        }
        function e(a, b, d, e) {
            var f = {};
            return f.encText = c(a + e, b, d),
            f
        }
        window.asrsea = d,
        window.ecnonasr = e
    

    结合步骤05的图解, 可以知道方法b是一个加密方法,方法d是一个参数组装方法,

    细看方法d, 会发现调用了两次方法b, 也就是加密两次了, 第一次是对参数d, g加密, g是一个常量, 上面以及解析了, 第二次是对第一次机密的结果再次进行加密, 参数i是一个调用了a方法的16为随机数, 因此i也是可以理解为一个常量值, 通过debug, 就可以查到这个常量是什么了

    接着再看 h.encSecKey = c(i, e, f),这行代码
    由于 i 可以理解为常量, e 传入d方法的时候也是常量, f 传入d方法的时候也是常量,
    因此可以理解为h.encSecKey也是一个常量, 我们只需要debug, 获取到一个h.encSecKey即可( 但是这个encSecKey和参数 i 需要 同一次debug出来的才可以, 否则有问题的…)


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^