Existe uma maneira simples de obter o URL atual de um iframe?
O visualizador passaria por vários sites. Estou supondo que usaria algo em javascript.
javascript
url
iframe
Chris
fonte
fonte
Respostas:
Por motivos de segurança, você só pode obter o url enquanto o conteúdo do iframe e o javascript de referência forem veiculados no mesmo domínio. Enquanto isso for verdade, algo assim funcionará:
Se os dois domínios forem incompatíveis, você encontrará restrições de segurança de script de referência entre sites.
Veja também as respostas a uma pergunta semelhante .
fonte
sandbox="allow-same-origin"
ao iframe?Se o seu iframe for de outro domínio (vários domínios), as outras respostas não irão ajudá-lo ... você simplesmente precisará usar isto:
e - aqui você tem o url principal!
fonte
Espero que isso ajude de alguma forma, no seu caso, sofri exatamente com o mesmo problema e acabei de usar o localstorage para compartilhar os dados entre a janela pai e o iframe. Portanto, na janela principal, você pode:
E no código em que a origem do iframe é apenas obter esses dados do armazenamento local:
Me economizou muito tempo. Pelo que posso ver, a única condição é o acesso ao código da página pai. Espero que isso ajude alguém.
fonte
Se você estiver no contexto iframe,
você poderia fazer
Se você estiver na janela / frame pai, poderá usar a resposta de https://stackoverflow.com/a/938195/2305243 , que é
fonte
Tive um problema com hrefs de url de blob. Portanto, com uma referência ao iframe, acabei de produzir um url do atributo src do iframe:
fonte
Algumas informações adicionais para qualquer pessoa que possa estar tendo problemas com isso:
Você receberá valores nulos se tentar obter o URL do iframe antes de carregá-lo. Resolvi esse problema criando todo o iframe em javascript e obtendo os valores de que precisava com a função onLoad:
Por causa da política de mesma origem, tive problemas ao acessar frames de "origem cruzada" - resolvi isso executando um servidor da Web localmente em vez de executar todos os arquivos diretamente do meu disco. Para que tudo isso funcione, você precisa acessar o iframe com o mesmo protocolo, nome de host e porta da origem. Não tenho certeza de qual desses estava / estava faltando ao executar todos os arquivos do meu disco.
Além disso, mais sobre objetos de localização: https://www.w3schools.com/JSREF/obj_location.asp
fonte