Pergunta

A questão de como fazer o seu iframe encaixam 100% do seu conteúdo (usando JavaScript) foi respondida no já ... para iframe exibindo o conteúdo do mesmo domínio somente .

As minhas perguntas: É possível redimensionar um iframe para caber o conteúdo quando o atributo iframe src é para um fora da página do domínio da página que contém o quadro? As características de segurança do navegador em torno de cross-site scripting me impedir de acessar o objeto de documento para o iframe.

Eu estou procurando alguma solução criativa. Um dos meus pensamentos foi detectar alguma forma que as barras de rolagem eram visíveis no iframe, e gradualmente aumentar a altura até que eles não estavam. Infelizmente não consigo encontrar alguma maneira de detectar as barras de rolagem visíveis também. Ideias?

Por favor note que eu estou procurando uma solução do lado do cliente.

Respostas:


Dave

O problema ainda existe -. Eu não sei a altura do documento remoto antes do tempo, por isso não posso defini-lo a partir de um valor de banco de dados ou querystring


dusoft

100% sobre o iframe em CSS não vai configurá-lo para 100% do conteúdo dentro do iframe, mas em relação à página ou contendo elemento (ou seja, um div ou algo assim).

Foi útil?

Solução

(Minha resposta a uma semelhante questão )

É não é possível para fazer isso sem algum controle sobre a página que está sendo iframed por causa do modelo de segurança do navegador. Se fosse possível, isso seria um problema de segurança e teria que ser corrigido.

Apesar de deixar o local de incorporação saber a altura de uma terceira página festa quando incorporado na página parece inofensivo, isso pode vazar informações para o site a incorporação de que o usuário do navegador quer manter privado. Por exemplo, http://www.facebook.com/ processado de modo diferente, dependendo se você está ou não conectado , portanto, se o meu site pode calcular a altura de <iframe src="http://www.facebook.com/"> então eu posso trabalhar para fora se ou não você é um usuário do Facebook, algo que você provavelmente não quer que eu saiba.

O vazamento de informações seria semelhante à infame CSS História Leak que fabricantes de navegadores tiveram de ligar.

Outras dicas

É possível redimensionar um iframe para caber o conteúdo quando o atributo iframe src é para um fora da página do domínio da página que contém o quadro?

É possível contornar a limitação de cross-site e ter um conjunto iframe à altura do seu conteúdo, mas pode ser um pouco estranho para obtê-lo para o trabalho.

A solução envolve o trabalho em torno do modelo de segurança por ter o conteúdo iframed próprio iFrame uma página no mesmo servidor que a página pai, com o qual ele pode se comunicar. Eu respondi uma pergunta semelhante a este, antes aqui , que vai para um pouco de detalhes sobre os meandros da criação tudo.

A ressalva sobre a abordagem descrita é que você deve ter meios de obter o seu conteúdo iframed para si iframe uma página no servidor pai. Isso geralmente é achieveable quando o conteúdo iframed está lá como parte de uma parceria acordada entre sites, mas YMMV.

Parece que você está tentando trabalhar em torno de um recurso de segurança que foi posto em prática por uma boa razão ...

O redimensionamento tem que ser através de script? Você pode redirecionar para uma página onde o tamanho do iframe é tirado de uma querystring, ou um banco de dados ou arquivo de configuração, etc.

que sobre o uso de 100% em CSS? barras de rolagem pode ser desativada no iframe, mas então o usuário não será capaz de rolagem.

que é a prevenção JS / XSS, por isso, superar isso e tentar puxar o conteúdo no lado do servidor e servi-lo através de uma ligação local.

Esta é teórica como eu não testei:

1) PHP salvar a página remota num arquivo html local usando file_get_content() ou usando ONDA. 2) Javascript carga arquivo local em iframe -. Agora é local e as questões de segurança não se aplicam

Se houver javascript vars ou Session vars (que não pode ser retirado do conteúdo remoto), você pode pelo menos usar esta técnica para consultar a altura do documento de seu arquivo local, definir o iframe em conformidade, em seguida, carregar o URL remoto no redimensionada iframe.

Cavat: você não tem nenhuma maneira de saber URLs para alterações de páginas dentro da página remota, portanto, você só pode usar esta técnica na primeira página. Se as páginas remotas são todos mesma altura isso não é problema.

Nem as melhores soluções, mas você pode tentar:

javascript para escrever iframe, no aplicativo iframe definir a altura atual em url # H700 para 700px etc; em seguida, usar um loop para ouvir que a mudança no local host "no javascript" para ler o src = "url # H700" e definir a altura do iframe por isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top