Como posso controlar a imagem de plano de fundo e a cor de um elemento do corpo em um iframe
? Observe que o elemento do corpo incorporado possui uma classe e o iframe
de uma página que faz parte do meu site.
A razão pela qual eu preciso disso é que meu site tem um plano de fundo preto atribuído ao corpo e, em seguida, um plano de fundo branco atribuído a divs que contêm texto. Um editor WYSIWYG usa um iframe
para incorporar conteúdo ao editar, mas ele não inclui a div, portanto, o texto é muito difícil de ler.
O corpo do iframe
quando no editor tem uma classe que não é usada em nenhum outro lugar, então estou assumindo que isso foi colocado lá para que problemas como esse pudessem ser resolvidos. No entanto, quando aplico estilos, class.body
eles não substituem os estilos aplicados ao corpo. O estranho é que os estilos aparecem no Firebug, então não faço ideia do que está acontecendo!
obrigado
ATUALIZAÇÃO - Tentei a solução do @ mikeq de adicionar um estilo à classe que é a classe do corpo. Isso não funciona quando adicionado à folha de estilo da página principal, mas funciona quando adicionado ao Firebug. Estou assumindo que isso ocorre porque o Firebug é aplicado a todos os elementos da página, enquanto o CSS não é aplicado dentro de iframes. Isso significa que adicionar o css após o carregamento da janela com JavaScript funcionaria?
fonte
<div>
lata pode às vezes ser uma solução alternativa (se o CORS-Header permitir isso) ... (e "desinfetar" os dados carregados por regexp no diretório . maneira Sim, todos hacky ...)Respostas:
Um iframe é um "buraco" na sua página que exibe outra página da web dentro dele. O conteúdo do iframe não está em nenhuma forma ou parte da sua página pai.
Como outros já declararam, suas opções são:
fonte
O abaixo funciona apenas se o conteúdo do iframe for do mesmo domínio pai.
O seguinte script jquery funciona para mim. Testado no Chrome e IE8. O iframe interno faz referência a uma página que está no mesmo domínio que a página pai.
Nesse caso em particular, estou ocultando um elemento com uma classe específica no iframe interno.
Basicamente, você apenas acrescenta um elemento 'style' à 'cabeça' do iframe interno.
fonte
Você não pode alterar o estilo de uma página exibida em um iframe, a menos que tenha acesso direto e, portanto, seja proprietário dos arquivos html e / ou css de origem.
Isso é para interromper o XSS (Cross Site Scripting)
fonte
Um
iframe
tem outro escopo; portanto, você não pode acessá-lo para estilizar ou alterar seu conteúdo com javascript.É basicamente "outra página".
A única coisa que você pode fazer é editar seu próprio CSS, porque com o seu CSS global você não pode fazer nada.
fonte
Substituir outro
iframe
CSS do domínioUsando parte da resposta do SimpleSam5 , consegui isso com alguns iframes de bate-papo do Tawk (a interface de personalização é boa, mas eu precisava de mais personalizações).
Nesse iframe específico que aparece em dispositivos móveis, eu precisava ocultar o ícone padrão e colocar uma das minhas imagens de plano de fundo. Eu fiz o seguinte:
Eu não possuo nenhum domínio de Tawk e isso funcionou para mim; portanto, você pode fazer isso mesmo que não seja do mesmo domínio pai (apesar do comentário de Jeremy Becker sobre a resposta de Sam).
fonte
Este código usa JavaScript vanilla. Cria um novo
<style>
elemento. Ele define o conteúdo de texto desse elemento como uma sequência que contém o novo CSS. E anexa esse elemento diretamente ao cabeçalho do documento iframe.fonte
Blocked a frame with origin xxxxxxxxx from accessing a cross-origin frame.
Eu tenho medo que não vai funcionar #Se você tiver o controle da página que hospeda o iframe e a página do iframe, poderá passar um parâmetro de consulta para o iframe ...
Aqui está um exemplo para adicionar uma classe ao iframe com base no fato de o site de hospedagem ser ou não móvel ...
Adicionando o iFrame:
Dentro do iFrame:
fonte
Eu tenho um blog e tive muitos problemas para descobrir como redimensionar minha essência incorporada. O Post Manager permite apenas escrever texto, colocar imagens e incorporar código HTML. O layout do blog é responsivo em si. É construído com o Wix. No entanto, o HTML incorporado não é. Eu li muito sobre como é impossível redimensionar componentes dentro do corpo dos iFrames gerados. Então, aqui está a minha sugestão:
Se você tiver apenas um componente dentro do seu iFrame, ou seja, sua essência, poderá redimensionar apenas a essência. Esqueça o iFrame.
Tive problemas com a viewport, layouts específicos para diferentes agentes do usuário e foi isso que resolveu o meu problema:
A lógica é definir css de gist (ou seu componente) com base no agente do usuário. Certifique-se de identificar seu componente primeiro, antes de aplicar ao seletor de consultas. Sinta-se livre para ver como a capacidade de resposta está funcionando .
fonte
Talvez tenha mudado agora, mas usei uma folha de estilo separada com este elemento:
para estilizar com êxito iframes do youtube incorporados ... consulte as postagens do blog nesta página .
fonte
forneça ao corpo da sua página iframe um ID (ou classe, se desejar)
depois, também na página do iframe, atribua um segundo plano ao CSS
fonte