我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
当前回答
检测堆栈溢出的问题是,有时堆栈跟踪将被解开,您将无法看到实际发生了什么。
我发现Chrome的一些较新的调试工具在这方面很有用。
点击Performance选项卡,确保Javascript样本被启用,你会得到类似这样的结果。
溢出的地方很明显!如果单击extendObject,您将能够看到代码中确切的行号。
你也可以看到时间,可能有帮助,也可能没有帮助,或者转移注意力。
另一个有用的技巧是,如果你不能真正发现问题,在你认为问题所在的地方放置大量的console.log语句。上面的步骤可以帮助你做到这一点。
在Chrome中,如果你反复输出相同的数据,它会像这样显示问题更清楚。在这个例子中,堆栈在最终崩溃之前击中了7152帧:
其他回答
我使用React-Native 0.61.5以及(npm 6.9.0和节点10.16.1)
当我安装任何新的库在项目我得到了一个
(例如NPM install @react-navigation/native——save)
最大调用堆栈大小超过错误
为此,我尽力了
Sudo NPM缓存清理-force
(注:-以下命令通常需要1 ~ 2分钟 取决于你的NPM缓存大小)
我在这里还面临着类似的细节问题 上传logo时使用下拉logo上传框
<div>
<div class="uploader greyLogoBox" id="uploader" flex="64" onclick="$('#filePhoto').click()">
<img id="imageBox" src="{{ $ctrl.companyLogoUrl }}" alt=""/>
<input type="file" name="userprofile_picture" id="filePhoto" ngf-select="$ctrl.createUploadLogoRequest()"/>
<md-icon ng-if="!$ctrl.isLogoPresent" class="upload-icon" md-font-set="material-icons">cloud_upload</md-icon>
<div ng-if="!$ctrl.isLogoPresent" class="text">Drag and drop a file here, or click to upload</div>
</div>
<script type="text/javascript">
var imageLoader = document.getElementById('filePhoto');
imageLoader.addEventListener('change', handleImage, false);
function handleImage(e) {
var reader = new FileReader();
reader.onload = function (event) {
$('.uploader img').attr('src',event.target.result);
}
reader.readAsDataURL(e.target.files[0]);
}
</script>
</div>
CSS.css
.uploader {
position:relative;
overflow:hidden;
height:100px;
max-width: 75%;
margin: auto;
text-align: center;
img{
max-width: 464px;
max-height: 100px;
z-index:1;
border:none;
}
.drag-drop-zone {
background: rgba(0, 0, 0, 0.04);
border: 1px solid rgba(0, 0, 0, 0.12);
padding: 32px;
}
}
.uploader img{
max-width: 464px;
max-height: 100px;
z-index:1;
border:none;
}
.greyLogoBox {
width: 100%;
background: #EBEBEB;
border: 1px solid #D7D7D7;
text-align: center;
height: 100px;
padding-top: 22px;
box-sizing: border-box;
}
#filePhoto{
position:absolute;
width:464px;
height:100px;
left:0;
top:0;
z-index:2;
opacity:0;
cursor:pointer;
}
在修正之前,我的代码是:
function handleImage(e) {
var reader = new FileReader();
reader.onload = function (event) {
onclick="$('#filePhoto').click()"
$('.uploader img').attr('src',event.target.result);
}
reader.readAsDataURL(e.target.files[0]);
}
控制台的错误:
我解决了它通过删除onclick="$('#文件照片').click()"从div标签。
我知道这个帖子很旧了,但我认为值得一提的是我发现这个问题的场景,所以它可以帮助其他人。
假设你有这样的嵌套元素:
<a href="#" id="profile-avatar-picker">
<span class="fa fa-camera fa-2x"></span>
<input id="avatar-file" name="avatar-file" type="file" style="display: none;" />
</a>
您不能在其父元素的事件内操作子元素事件,因为它会传播到自身,进行递归调用,直到抛出异常。
所以这段代码会失败:
$('#profile-avatar-picker').on('click', (e) => {
e.preventDefault();
$('#profilePictureFile').trigger("click");
});
你有两个选择来避免这种情况:
将子对象移动到父对象的外部。 将stopPropagation函数应用于子元素。
对我来说 我错误地分配了相同的变量名,并给val函数“class_routine_id”
var class_routine_id = $("#class_routine_id").val(class_routine_id);
应该是这样的:
var class_routine_id = $("#class_routine_id").val();
在我的例子中,在app。module中。ts,我得到这个错误,因为我在imports和entryComponents中声明了组件。
Example:
import { MyComponent } from '....';
@NgModule({
declarations: [
MyComponent
],
imports: [
MyComponent -- > remove this from here!!!!
],
providers: [],
bootstrap: [AppComponent],
entryComponents: [MyComponent]
})
export class AppModule { }