Javascript:isInIframe Erkennung in Javascript
inFrame = true;
try {
if(window.top == self) {
inFrame = false;
}
} catch (err){}
try {
if(window.parent.location == self.location){
inFrame = false;
}
} catch (err){}
Dies ist ein Stück Javascript-Code, den ich verwende, um festzustellen, ob meine Bibliothek in einem Iframe ist. 1 von 100% der Anfragen meldet, dass sich meine Bibliothek in einem Iframe befindet, was meiner Meinung nach nicht möglich ist.
Besteht die Möglichkeit, dass dieser Code fehlschlägt [true auf false oder umgekehrt]?
Von Zugriffsprotokoll [log ich alle solche iframe Anfragen]
- Ich fand, dass es in allen modernen Browsern geschieht [dh 6-9, Chrom, ff, Safari] von String-User-Agent.
- Ich konnte aus Referrer keinen Sinn machen, weil sie die gleiche wie meine Publisher-Site sind.
- In einigen Fällen habe ich für den gleichen Referrer gefunden, die gleiche URL angefordert & gleichen Client ip meine Bibliothek war einmal in einem iframe & nicht in anderen. Das ließ mich an dem obigen Code zweifeln.
Wird es einen Unterschied, während window
oder document
wird in den Eigenschaften geladen [self, location, top, parent
] ich überprüfen? Weil mein Skript synchron geladen und ausgeführt wird, meistens bevor das Dokument fertig ist oder das Fenster vollständig geladen ist und der Iniframe-Test weiterläuft.
Ich werde mit Fenster versuchen und den Status aktualisieren – Tamil