Maximum call stack size exceeded error

后端 未结 30 2575
独厮守ぢ
独厮守ぢ 2020-11-21 23:51

I am using a Direct Web Remoting (DWR) JavaScript library file and am getting an error only in Safari (desktop and iPad)

It says

Maximum call

相关标签:
30条回答
  • 2020-11-22 00:23

    Check the error details in the Chrome dev toolbar console, this will give you the functions in the call stack, and guide you towards the recursion that's causing the error.

    0 讨论(0)
  • 2020-11-22 00:24

    The problem with detecting stackoverflows is sometimes the stack trace will unwind and you won't be able to see what's actually going on.

    I've found some of Chrome's newer debugging tools useful for this.

    Hit the Performance tab, make sure Javascript samples are enabled and you'll get something like this.

    It's pretty obvious where the overflow is here! If you click on extendObject you'll be able to actually see the exact line number in the code.

    You can also see timings which may or may not be helpful or a red herring.


    Another useful trick if you can't actually find the problem is to put lots of console.log statements where you think the problem is. The previous step above can help you with this.

    In Chrome if you repeatedly output identical data it will display it like this showing where the problem is more clearly. In this instance the stack hit 7152 frames before it finally crashed:

    0 讨论(0)
  • 2020-11-22 00:26

    I also faced similar issue here is the details when uploading logo using dropdown logo upload box

    <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;
    }
    

    before correction my code was :

    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]);
              }
    

    The error in console:

    I solved it by removing onclick="$('#filePhoto').click()" from div tag.

    0 讨论(0)
  • 2020-11-22 00:29

    If you need a infinite process/recursion running for some reason, you can use a webworker in a seperate thread. http://www.html5rocks.com/en/tutorials/workers/basics/

    if you want to manipulate dom elements and redraw, use animation http://creativejs.com/resources/requestanimationframe/

    0 讨论(0)
  • 2020-11-22 00:29

    I was facing same issue I have resolved it by removing a field name which was used twice on ajax e.g

        jQuery.ajax({
        url : '/search-result',
        data : {
          searchField : searchField,
          searchFieldValue : searchField,
          nid    :  nid,
          indexName : indexName,
          indexType : indexType
        },
    .....
    
    0 讨论(0)
  • 2020-11-22 00:29

    in my case I m getting this error on ajax call and the data I tried to pass that variable haven't defined, that is showing me this error but not describing that variable not defined. I added defined that variable n got value.

    0 讨论(0)
提交回复
热议问题