bootstrap同时调用多modal时,提示Maximum call stack size exceeded

Null--Null 发布于 2013/08/07 15:20
阅读 10K+
收藏 0

Uncaught RangeError: Maximum call stack size exceeded

HTML

<div id="Modal_Info" class="modal hide fade" style="width:auto;height: auto;" tabindex="1" role="dialog" aria-labelledby="Modal_Info" aria-hidden="true">
	<h2>
		<span id="ico_info" class="ico_success"></span>
		<span class="info_s"></span>
	</h2>
</div>



function Modal_Info(_Modal_Info,success,mess){
		var m_info = $('#'+_Modal_Info);
		$(".info_s").html(mess);//先加入消息
		var Point = getObjPoint(_Modal_Info);//获得居中的坐标
		var ico_info = $("#ico_info");
		if(arguments[1]=='success'){
			ico_info.attr('class','ico_'+success);
		}else{
			ico_info.attr('class','ico_'+success);
		}
		m_info.css({'position':'absolute','top':Point.top,'left':Point.left,'margin-left':'0px','z-index':'9999'});
		m_info.modal({ keyboard: false  });//关闭模态当退出键被按下
		setTimeout(function(){//为一个提示窗口,一秒钟之后关闭,谷歌浏览器没有问题,但是会报错,不影响运行
			//$("#"+_Modal_Info).modal('hide');
		},1000);

}

IE

在谷歌、FF浏览器中有Uncaught RangeError: Maximum call stack size exceeded但是不影响运行结果,一样可以定时关闭,但是IE8就不运行了,卡住了,网上的答案如下,不太明白。在单个弹窗下不所有浏览器都可以运行,结果一样,有碰到如下问题的,求指教!!!

Math.power = Math.pow;
Math.pow = function(x, y) {
	if (x != 0) {
		return Math.power(x, y);
	} else {
		return 0;
	}
}
if (Math.power == null) { //Solution: 如果Math.power 已经在别的地方定义过了,再次这样重新定义,会导致循环引用
	Math.power = Math.pow;
	Math.pow = function(x, y) {
		if (x != 0) {
			return Math.power(x, y);
		} else {
			return 0;
		}
	}
}

调用方法就是:ajax返回

function(data){
   if(data=="success"){
    Modal_Info("Modal_Info",'success',"添加部门成功!");
    }
}
加载中
0
Null--Null
Null--Null
已经解决了,需要引入bootstrap-modalmanager.js bootstrap-modal.js  bootstrap-modal.css,默认是不可同时多个的
1
g8up
g8up

1.这里有说明,不支持重叠的modal

http://getbootstrap.com/javascript/#modals

2.这里有解决方法:(我在v3.3.1下测试成功)

http://gurde.com/stacked-bootstrap-modals/

3.这也有些解决方案:

https://github.com/twbs/bootstrap/pull/5022

0
行陌路
行陌路
很明显,死循环了
Null--Null
Null--Null
知道是死循环了,所以现在要都解决啊,这是bootstrap的问题
0
行陌路
行陌路
我弹出过两个的,没发现问题
Null--Null
Null--Null
m_info.modal({ keyboard: false });
Null--Null
Null--Null
第2个为自动弹窗,也就是直接调用,不是通过按钮
0
MikeKK
MikeKK
我的做法是在调用新窗口之前,手动关闭其他窗口
Null--Null
Null--Null
在更新的时候,为返回信息提示,不能先关闭,再显示,这样体验不好
0
Applee
Applee

其实bs原本没打算让你弹出多个,问题在于enforceFocus事件处理上,如果想弹出多个,修改enforceFocus即可。最后想说bootstrap在js组件方面的质量很一般,人家本来就是个css库。

0
叶叶心心
叶叶心心
bootstrap-modalmanager.js bootstrap-modal.js  bootstrap-modal.css

这几个文件从哪里可以下载到?

返回顶部
顶部