À l'aide de JS comment puis-je arrêter de l'enfant Iframes à partir de réorienter ou d'au moins inviter les utilisateurs à propos de la redirection
De nombreux sites ont des scripts similaire à celui ci-dessous. Ils sont soumis à empêcher d'autres personnes de semer la discorde entre les sites.
if (top.location != location) {
top.location.href = document.location.href;
}
J'ai besoin d'une certaine manière à réaliser que l'iframe est d'essayer de réorienter, et si elle l'est , je vais supprimer l'iFrame et mettre à la place un lien vers le site. De cette façon, je ne violez pas la politique d'utilisation de l'encadré site web et aussi le lien vers le site. Je comprends que vous pouvez utiliser l'événement onbeforeunload comme discuté ici et ici mais les deux semblent vraiment contraire à l'éthique. Je me souviens avoir lu quelque part sur une bibliothèque qui fait exactement la même chose (digg fait la même chose). Tous les fils?
Vous devez vous connecter pour publier un commentaire.
Le problème avec la solution ci-dessus est qu'il peut être enlevé à l'aide d'un simple:
Une fois que l'on a appelé, puis le
prevent_bust
ne sera jamais incrémenté, ce qui signifie que le site web sera librement re-dirigé sans votre consentement ou la connaissance. Mauvaise affaire.Si vous vouliez en permanence une version fonctionnelle de la solution, je recommanderais de faire ceci à la place:
Malheureusement, cela ne cause quitter un problème-et c'est une chose banale pour récupérer l'intervalle de temps qui a été défini, indéfini, puis re-direct la page:
Votre meilleur pari est fait pour résoudre ce problème côté serveur (si vous pouvez). Si vous avez accès au serveur pour le site web qui permettra de tenir les iframes, de créer un intermédiaire, proxy emplacement où vous tirez dans les données du site et ensuite dépouiller les balises de script:
Ensuite, vous devez utiliser la balise:
Malheureusement, cela signifie que votre iframe sera en cours d'exécution sans JavaScript qui pourrait paralyser, si pas complètement lobotomize le site web en question. Vous aurez également besoin de s'assurer que tous les attributs src sont correctement modifié pour les nœuds descendants de l'étranger du site HTML.
D'autre part, vous pourriez avoir votre serveur de vérifier l'encadré site et l'ensemble de ses JS pages pour voir si l'expression rationnelle haut(.|[\s*("|'))emplacement (ce sera match haut.l'emplacement, en haut["emplacement, et le haut de[ 'emplacement) existe (ou s'il y a des références au-dessus du tout), et ensuite utiliser un lien si elle n'existe pas et que le site bon si il ne le fait pas. Au détriment ici, c'est qu'alors vous êtes forçant l'utilisateur à attendre pour le site pour charger deux fois: une fois sur le serveur et une fois dans leur navigateur. (sauf si tout est fait à travers le JS, mais c'est généralement plus gênant, à mon avis).
Personnellement, je suis de l'avis que le "ne cadre de mon site" de la foule peut généralement gagner plus de batailles qui implique l'iframe directement. D'autre part, si le code est utilisé pour traiter le HTML avant il est ajouté à une page web, puis de l'autre côté se dresse plus qu'une chance de combat.
Comme une note de côté, tout cela peut être accompli à l'aide de JavaScript et AJAX, mais qui sera généralement un peu plus lent. Utiliser le serveur, si vous le pouvez.
<body onload="breakOutOfIframe()"> ... </body>
Si vous utilisez HTML5, je voudrais suggérer l'utilisation de nouveaux "bac à sable" de la propriété, MAIS il n'est pas encore compatible avec tous les navigateurs. http://www.w3schools.com/tags/att_iframe_sandbox.asp
Dans mon cas, j'ai juste ajouté "allow-formes" et "autoriser les scripts" comme le bac à sable, les valeurs de la propriété et de l'embedded site n'est plus de redirection et ne peut toujours exécuter JavaScript
à l'aide de "allow-top-navigation" comme valeur le site de redirection de nouveau!
ex:
<iframe sandbox="allow-forms allow-scripts" ... /></iframe>
Si quelqu'un sait tout des Inconvénients à l'utilisation de cette approche, j'aimerais savoir à ce sujet.
Quelqu'un d'autre avec la même réponse: https://stackoverflow.com/a/9880360/1404129 (je suis tombé sur cette réponse plus tard)
Vous pouvez essayer de créer l'image buster buster, tout est décrit par Jeff Atwood dans son blog: Nous Avons Fait Été ... Encadrée! - coddinghorror.com
En bref, vous devez mettre en place quelque chose comme ceci: