如何调试隐藏输入字段值的JavaScript修改?

时间:2017-10-31 03:54:29

标签: javascript jquery angularjs laravel debugging

我有一个带有Angular JS前端的Laravel 5.2应用程序。我遇到了一个首先表现为CSRF令牌不匹配异常的问题。进一步调试,我发现虽然正确生成并填充了包含CSRF值的隐藏输入字段,但在页面加载期间的某个时候,该值将从DOM中删除。

这是原始DOM元素的样子:

<input type="hidden" name="_token" value="foo-bar">

显然,进行修改的代码必须是JavaScript。我尝试搜索与输入类型和名称相关的DOM绑定,并且显示为空白。同样,看似没有寻找父DOM元素的绑定。

然后我注意到一些更奇怪的东西:我可以将该字段重命名为另一个名称&#39;属性,甚至更改字段类型(比如说,&#39; text&#39;),仍然会发生值删除。我发现任何21个或更多字符的值都会被删除。只剩下20个字符的值。

我已经浏览了每一行自定义JS代码,并没有找到罪魁祸首。没有引用字段名称或值长度。

安装了很多作曲家包,许多不同的供应商,然后是Angular的东西和jQuery UI的东西 - 我无法合理搜索的大量JS,因为我实际上没有任何东西搜索(甚至无法搜索20/21值,因为grep会产生数千个结果)。

Chrome允许我在该输入元素上放置一个断点,并说当属性发生变化时应该触发断点...除非它没有触发。

关于如何追踪问题根源的任何其他想法?

1 个答案:

答案 0 :(得分:0)

好吧,一天后我终于找到了问题:我的Chrome浏览器中安装了“Adblock Plus for YouTube”扩展程序。这个扩展已安装多年,但现在 - 随机 - 开始导致问题。禁用它可以解决问题,重新启用它会重新引入问题。

通过消除过程找到。仍然没有好方法来调试我描述的问题。