Obtendo 0 ao tentar obter o valor superior do offset do elemento onload

9

Estou trabalhando no projeto que possui mais de um iframes. O iframe principal tem a página e a página contém iframe filho que também tem o conteúdo da página.

Dentro do iframe filho eu tenho as guias, cada guia tem o conteúdo da página que é carregado dinamicamente do servidor.

Estou tentando obter o valor máximo de deslocamento de um elemento div usando offset (). topo da parte superior da tela quando página onload. Ele retorna algum valor ao recarregar o iframe filho usando "Recarregar iframe", mas retorna "0" ao recarregar a página.

Estou anexando aqui a imagem que estou tentando fazer, por favor, verifique se eu não expliquei claramente meu problema acima.

Eu tentei esse código e coloquei esse código dentro de $ (document) .ready () {}, está funcionando bem ao recarregar o iframe específico. Mas retorna 0 no carregamento.

var $stored_selector = $('#displayMedsdetail');
var offset = $stored_selector.offset(), remaining_height;
console.log(offset.top);

Alguém pode me ajudar a descobrir por que o offset (). top retorna 0 ao recarregar a página?

    
por KickyTrick 09.01.2018 в 09:01
fonte

2 respostas

3

Use .contents () para chegar ao DOM do iFrame.

Heres e exemplo de algum código que usei antes:

var content=$("iframe").contents().find('body').html();

Você provavelmente pode reescrevê-lo para obter o elemento div e o deslocamento dele.

    
por mrdeadsven 09.01.2018 / 09:52
fonte
0

Espero que você não esteja tentando obter informações de um iFrame. Porque iFrames geralmente não são projetados para qualquer outra coisa que não seja visualizá-lo. Isso significa que não editá-lo e não pegar qualquer informação. Então, tanto quanto eu sei, não há maneira de pegar qualquer informação de dentro de um iFrame usando JS.

Por que você não pode ler o deslocamento superior do iFrame que você pode ter. Então isso tem mais a ver com o timing. Alguns problemas podem ser resolvidos quando você escolhe $(document).ready() em conjunto com setTimeout() e, em muitos casos, até 0 ms é bom o suficiente. Como não há código para ver, é realmente difícil dizer qual é o problema.

    
por Vadim Cool 09.01.2018 / 09:34
fonte