Scroll beginning at the end with iframe instead of div

1

I would like a function of this type, except in iframe :

    function updateScroll() {
      var element = document.getElementById("oTeuId");
      element.scrollTop = element.scrollHeight;
    }
    
    // primeira chamada ao carregar a página
    updateScroll();
    
    // adicionar conteúdo, simulando chamada Ajax
    i = 5;
    
    function minhaChamadaAjax() {
    
      i++;
    
      var div = document.getElementById("oTeuId");
    
      // mais conteúdo para o elemento
      var oNewP = document.createElement("p");
      var oText = document.createTextNode(i + " Nunc tristique, justo ac fermentum tincidunt, erat eros dignissim mauris, id molestie tortor risus vel eros. Donec nulla est, condimentum id auctor ac, fringilla non elit. Ut eu diam tincidunt, dapibus neque ut, iaculis tortor. Nunc congue nisl a diam luctus, id consequat ante aliquet. Donec elit mauris, aliquam vel cursus quis, vulputate lacinia turpis. Curabitur semper justo ante, a suscipit nisi laoreet at. Nam laoreet maximus turpis, ut luctus tortor finibus sit amet. Donec nec tristique leo. Fusce sollicitudin molestie lectus vitae pulvinar. Suspendisse quis arcu blandit, ultricies lacus vitae, maximus eros.");
      oNewP.appendChild(oText);
      div.appendChild(oNewP);
    
      // chama atualização do scroll
      updateScroll();
    }
    var timerId = window.setInterval(minhaChamadaAjax, 1000);
    
    // parar a demonstração ao fim de 10 segundos (ainda estás a observar?)
    setTimeout(function() {
      clearInterval(timerId)
    }, 10000);
    
asked by anonymous 10.08.2017 / 03:51

1 answer

0

You can not really understand what you really need. You can take the test here at jsbin

function updateScroll() {
  var element = document.getElementById("oTeuId");
  element.contentWindow.scrollTo(0,element.contentWindow.document.body.scrollHeight);
}

// primeira chamada ao carregar a página
updateScroll();

// adicionar conteúdo, simulando chamada Ajax
i = 5;

function minhaChamadaAjax() {

  i++;
  // Adiciona conteudo ao iFrame
  var ifrm = document.getElementById('oTeuId');
  ifrm = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;
  ifrm.document.open();
  ifrm.document.write("<p>" + i + " Nunc tristique, justo ac fermentum tincidunt, erat eros dignissim mauris, id molestie tortor risus vel eros. Donec nulla est, condimentum id auctor ac, fringilla non elit. Ut eu diam tincidunt, dapibus neque ut, iaculis tortor. Nunc congue nisl a diam luctus, id consequat ante aliquet. Donec elit mauris, aliquam vel cursus quis, vulputate lacinia turpis. Curabitur semper justo ante, a suscipit nisi laoreet at. Nam laoreet maximus turpis, ut luctus tortor finibus sit amet. Donec nec tristique leo. Fusce sollicitudin molestie lectus vitae pulvinar. Suspendisse quis arcu blandit, ultricies lacus vitae, maximus eros.</p>");
  ifrm.document.close();

  // chama atualização do scroll
  updateScroll();
}
var timerId = window.setInterval(minhaChamadaAjax, 1000);

// parar a demonstração ao fim de 10 segundos (ainda estás a observar?)
setTimeout(function() {
  clearInterval(timerId)
}, 10000);
<iframe id="oTeuId"></iframe>

Edit # 01

Change the updateScroll function to:

function updateScroll() {
  var element = document.getElementById("oTeuId");
  element.contentWindow.scrollTo(0,element.contentWindow.document.body.scrollHeight);
}
    
10.08.2017 / 04:31