Ich habe einen Beispielcode erstellt. Jetzt können Sie leicht verstehen, dass Sie von einer anderen Domain aus nicht auf den Auf den Inhalt des iframe kann man nicht zugreifen, auf den Inhalt des iframe kann man zugreifen.
Ich teile Ihnen meinen Code mit, bitte führen Sie diesen Code aus Prüfen Sie die Konsole. Ich drucke Bild src in der Konsole. Es gibt vier iframe, zwei iframe, die von der gleichen Domain kommen, und zwei weitere von einer anderen Domain (Drittanbieter), Sie können zwei Bild-SRC sehen ( https://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif
と
https://www.google.com/logos/doodles/2015/arbor-day-2015-brazil-5154560611975168-hp2x.gif ) auf der Konsole und kann auch zwei Berechtigungsfehler sehen( 2 Fehler: Zugriffsberechtigung für die Eigenschaft 'document' verweigert
...irstChild)},contents:function(a){return m.nodeName(a, "iframe")?a.contentDocument...
), die von einem Iframe eines Drittanbieters stammt.
<body id="page-top" data-spy="scroll" data-target=".navbar-fixed-top">
<p>iframe from same domain</p>
<iframe frameborder="0" scrolling="no" width="500" height="500"
src="iframe.html" name="imgbox" class="iView">
</iframe>
<p>iframe from same domain</p>
<iframe frameborder="0" scrolling="no" width="500" height="500"
src="iframe2.html" name="imgbox" class="iView1">
</iframe>
<p>iframe from different domain</p>
<iframe frameborder="0" scrolling="no" width="500" height="500"
src="https://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif" name="imgbox" class="iView2">
</iframe>
<p>iframe from different domain</p>
<iframe frameborder="0" scrolling="no" width="500" height="500"
src="http://d1rmo5dfr7fx8e.cloudfront.net/" name="imgbox" class="iView3">
</iframe>
<script type='text/javascript'>
$(document).ready(function(){
setTimeout(function(){
var src = $('.iView').contents().find(".shrinkToFit").attr('src');
console.log(src);
}, 2000);
setTimeout(function(){
var src = $('.iView1').contents().find(".shrinkToFit").attr('src');
console.log(src);
}, 3000);
setTimeout(function(){
var src = $('.iView2').contents().find(".shrinkToFit").attr('src');
console.log(src);
}, 3000);
setTimeout(function(){
var src = $('.iView3').contents().find("img").attr('src');
console.log(src);
}, 3000);
})
</script>
</body>
3 Stimmen
Was enthält der iFrame - ist sein src auf einen anderen Bereich festgelegt?
0 Stimmen
Wenn es sich um einen anderen Bereich handelt, gibt es dann noch eine Möglichkeit, auf dessen Inhalt zuzugreifen oder ein Ereignis zu registrieren?
38 Stimmen
Nein, denn das wäre ein Cross-Site-Scripting, das aus Sicherheitsgründen verboten ist. Meine Lösung war die Verwendung eines Proxys: Ich habe den HTML-Code im IFRAME wortwörtlich über meine eigene Website eingespeist, so dass er aus Sicht des Browsers nicht mehr seitenübergreifend ist.
1 Stimmen
Es ist browserübergreifender zu verwenden
.contentWindow.document
als.document
über dieiframe
Element. Ich werde die obige Änderung vorschlagen.1 Stimmen
Eine Möglichkeit sind Chrome-Erweiterungen