Uncaught InternalError: too much recursion

今天在敲代码的时候偶然间发现项目因为一次操作导致浏览器变得非常卡,而且控制台还报错了

Uncaught InternalError: too much recursior

页面截图如下 :

突如起来的报错和页面异常卡顿给我整不会了ovo,点开报错的地方,直接跳转到对应的代码

/*** 保存菜单树的修改*/
function saveChange() {/*** 保存权限树的修改*/let row = $("#role_list").datalist("getSelected");if (row) {if (insertIds.length > 0 || deleteIds.length > 0) {let data = new FormData();data.append("roleId", row.id);if (insertIds.length > 0) {data.append("insertIds", insertIds);}if (deleteIds.length > 0) {data.append("deleteIds", deleteIds);}postForm("/role_permission/distribute", data, function (resp) {insertIds = [];deleteIds = [];showMsg(resp.message);$("#permission_tree").tree("reload");}, error);}}if (displayIds.length > 0 || hideIds.length > 0) {let data = new FormData();if (displayIds.length > 0) {data.append("displayIds", displayIds);}if (hideIds.length > 0) {data.append("hideIds", hideIds);}postForm("/user_menu/control", data, function (resp) {hideIds = [];displayIds = [];showMsg(resp.message);$("#menu_tree").tree("reload");}, error);}$("#system_window").dialog("close");
}$(function() {    $("#system_window").dialog({title: "系统设置",modal: true,closed: true,closable: true,draggable: false,onClose: function () {saveChange();},buttons: [{iconCls: "icon-ok",text: "确定",handler: function() {saveChange();}}]});});

看到这个代码,我愣了一下,这怎么会报错呢?

但是经过我三分钟的思考,发现原来是因为onClose()事件被反复触发了,导致页面卡顿。

第一次触发onClose事件是点击确定按钮的时候,saveChange()方法的最后一句代码主动关闭对话框。然后这个操作又会触发onClose事件,再次调用saveChange()方法,然后就进入了无限循环,直到报错才停止!

$("#system_window").dialog("close");

问题找到了,把绑定的onClose()事件删掉,问题完美解决~

    $("#system_window").dialog({title: "系统设置",modal: true,closed: true,closable: true,draggable: false,buttons: [{iconCls: "icon-ok",text: "确定",handler: function() {saveChange();}}]});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML满屏漂浮爱心

目录 写在前面 满屏爱心 代码分析 系列推荐 写在最后 写在前面 小编给大家准备了满屏漂浮爱心代码&#xff0c;一起来看看吧~ 满屏爱心 文件heart.svg <svg xmlns"http://www.w3.org/2000/svg" width"473.8px" height"408.6px" view…

Ansible的安装与配置

Ansible的安装与配置 1. 安装ansible # ansible是epel源提供的&#xff0c;所以必须安装epel&#xff1a; [rootRocky9 ~]# yum -y install epel-release Last metadata expiration check: 0:01:53 ago on Tue 26 Dec 2023 10:05:34 PM CST. Dependencies resolved. Package …

精品录播|电磁场数值仿真技术及天线设计与应用

电磁场数值仿真技术及天线设计与应用

直播预约丨《袋鼠云大数据实操指南》No.2:实时开发,如何成为数据智能化的有效驱动力

近年来&#xff0c;新质生产力、数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮&#xff0c;持续冲击并革新着企业数字化转型的观念视野&#xff0c;昭示着一个以数据为核心驱动力的新时代正稳步启幕。 面对这些引领经济转型的新兴概念&#xff0c;为了更好地服务于客户…

银河麒麟V10桌面版分区分析

前言&#xff1a;本文只讨论gpt分区uefi引导形式 &#xff0c;了解分区方案的目的是方便恢复&#xff0c;还原&#xff0c;扩容等&#xff0c;普通用户使用无需了解这些细节。 先回顾分析windows和ubuntu默认分区用做对比 1、windows11默认分区 win11分区&#xff0c;如上图&am…

【Linux线程(二)】线程互斥和同步

前言&#xff1a; 在上一篇博客中&#xff0c;我们讲解了什么是线程以及如何对线程进行控制&#xff0c;那么了解了这些&#xff0c;我们就可以在程序中创建多线程了&#xff0c;可是多线程往往会带有许多问题&#xff0c;比如竞态条件、死锁、数据竞争、内存泄漏等问题&#…

高扩展性便携式1553B总线测试仪,支持麒麟操作系统

手提式便携1553B总线测试仪&#xff0c;利用订制平台的PXIe扩展槽嵌入石竹科技自主研发的高性能T系列专用1553B测试板卡和高级协议分析和测试软件FP-1553B Pro、FP-5186集成的一款模块化、功能可订制的测试仪器。 基本配置可对1553B信号进行波形采集&#xff08;提供软件示波器…

Charles抓包工具使用指南:成为网络数据侦察高手

在日常的开发和测试工作中&#xff0c;能够洞察网络请求和响应的细节对于诊断问题、优化性能及保障数据安全至关重要。Charles作为一款流行的网络抓包和调试工具&#xff0c;凭借其强大的功能和直观的界面成为许多开发人员和测试工程师的必备神器。那么&#xff0c;如何高效地使…

Android RecyclerView注册每项的单击和长按事件监听

1.在Adapter中定义监听接口 public class DeviceListAdapter extends RecyclerView.Adapter<DeviceViewHolder> {public interface OnItemClickListener {public void onItemClick(View view, int position);public void onItemLongClick(View view, int position);}pri…

【批量处理文档】CleverPDF,WOED,EXCEL,PPT,PDF批量转换相关的工具网站NO.97

本文一共:429 个字,需要阅读:2 分钟,更新时间:2024年5 月14日,部分内容具有时效性,如有失效请留言,阅读量:1 CleverPDF&#xff0c;具有44个功能强大的免费在线PDF转换器和工具。 资源来源于网络&#xff0c;免费分享仅供学习和测试使用&#xff0c;请勿用于商业用途&#xff…

超级漂亮的 Ai 官网源码

超级漂亮的 AI 官网源码 效果图部分源码领取源码下期更新预报 效果图 部分源码 <script lang"js">function project3D(x, y, z, vars) {var p, dx - vars.camXy - vars.camY - 8z - vars.camZp Math.atan2(x, z)d Math.sqrt(x * x z * z)x Math.sin(p - v…

List/ConcurrentBag Contains的效率比Dictionary/ConcurrentDictionary ContainsKey 低几千倍

测试目标&#xff1a; 用两组 50000 个字符串做包含(Contains)判断&#xff0c;分析性能差异。 50000个字符串集合测试结果&#xff1a; Dictionary/ConcurrentDictionary 能在1-2毫秒完成50000个字符串集合的包含判断&#xff1b; List 需要3秒&#xff0c;ConcurrentBag需要…

白话机器学习4:小波分解的原理与Python代码实现

小波去噪可以想象成使用一把“筛子”来过滤信号。这个“筛子”能够根据信号的不同频率成分&#xff0c;将其分解成多个层次。在这个过程中&#xff0c;信号的重要信息通常包含在低频部分&#xff0c;而噪声则多分布在高频部分。 将信号通过这个“筛子”分解后&#xff0c;我们可…

leetcode-最长公共子序列(二)-103

题目要求 思路 step 1&#xff1a;优先检查特殊情况。 step 2&#xff1a;获取最长公共子序列的长度可以使用动态规划&#xff0c;我们以dp[i][j]dp[i][j]dp[i][j]表示在s1中以iii结尾&#xff0c;s2中以jjj结尾的字符串的最长公共子序列长度。 step 3&#xff1a;遍历两个字…

同为科技详解智能PDU所应用的通信协议与接口

现如今&#xff0c;信息服务、AI人工智能的飞速发展与增长&#xff0c;全球正经历信息数据的爆炸。不仅数据量以惊人的速度增长&#xff0c;而且全球社会各行业对数据的依赖的程度也在日益增加。这些趋势使数据中心在全球都享有关键基础架构的地位。假设某个数据中心发生严重的…

软删除和硬删除的区别及实际应用

在处理数据存储时&#xff0c;删除操作是不可避免的一部分。然而&#xff0c;并非所有的删除都是相同的。在本篇博客中&#xff0c;我们将探讨软删除&#xff08;Soft Delete&#xff09;和硬删除&#xff08;Hard Delete&#xff09;的概念、它们之间的区别&#xff0c;以及如…

Docker安装Jenkins踩坑

问题一 Jenkins中没有root权限报错 解决办法 创建容器时候添加参数-uroot docker run -d -p 18080:8080 -p 50000:50000 -uroot -v /var/run/docker.sock:/var/run/docker.sock -v /data/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins …

数据采集为什么会用到代理IP?

在数据采集中&#xff0c;代理IP是指通过使用代理服务器来隐藏或更改真实的IP地址&#xff0c;以访问目标网站或服务器。那么&#xff0c;数据采集为什么会用到代理IP呢&#xff1f;使用代理IP通常用于匿名地访问网站、绕过访问限制或提高数据采集的效率和安全性。 代理服务器作…

rk3399+qt实现IPC摄像头监看系统

需求 使用rk3399实现对nvr的摄像头进行查看 支持单/4分屏 自动轮询显示 与各个摄像头进行对讲联动&#xff0c;录像 方案 芯片平台&#xff1a;rk3399 桌面系统&#xff1a;ubuntu 界面开发&#xff1a;QT rtsp客户端&#xff1a;vlc/gstreamer 实现 主界面 未完待…

HCIA和HCIP区别大吗?小白请看这

华为认证以其专业性和实用性受到了业界的广泛认可。 HCIA、HCIP、HCIP这三个级别&#xff0c;你会选哪个&#xff1f;IE含金量不用多说&#xff0c;IA还是IP&#xff0c;你会纠结吗。 但面对这两个级别的认证&#xff0c;初学者或者“小白”们可能会感到困惑&#xff1a;两者…