2016-11-16 8 views
0

Also was ich versuche zu erreichen, ist eine interative iframe. Diese iframe stimmt mit der aktuellen übergeordneten URL überein (http://parenturl.com).Interaktive Iframe

Also sagen, ich habe eine iframe, die geht zu http://www.google.com und ich klicke auf einen Link innerhalb der Iframe.

Dies aktualisiert die übergeordnete URL zu http://parenturl.com#www.google.com/link2, die iframe geht dann zu dem, worauf Sie geklickt haben.

Ich möchte auch die Eltern-URL, um Parameter zu akzeptieren, also wenn ich http://parenturl.com#bing.com tun würde, würde es zu http://bing.com gehen.

Iframe-Code:

<iframe src="http://www.google.com" id="myFrame"></iframe> 

Anruf auf jedem Klick innerhalb iframe:

$('a').click(function() { 
    window.top.location.href = "http://www.parenturl.com#"+$(this).attr('href'); 
}); 

Anruf, wenn Seite geladen wird:

window.onload = function() { 
var loc = 'Get url from # in parent url; 
    document.getElementById('myFrame').setAttribute('src', loc); 
}); 

Ich habe Zugang zu beiden Domänen, aber ich kann nur HTML auf einem bearbeiten.

+0

Google möchte nichts mit iframes zu tun haben. – zer00ne

+0

Nur Beispiel-URLs –

+0

Sie können die untergeordnete Seite nicht bearbeiten, so dass CORS dem übergeordneten Seitenstandort den Zugriff erlaubt? Es fällt mir schwer, herauszufinden, dass man bearbeitet werden kann, während die andere Seite nicht bearbeitet werden kann. – zer00ne

Antwort

0

Um Cross-Site-Scripting-Angriffe zu verhindern, ist die gesamte Kommunikation vom Iframe zum Parent nicht erlaubt, wenn sich der Iframe in einer anderen Domäne befindet als der Parent. Sie können die iframe-URL vom übergeordneten Element festlegen. Der andere Weg - wie bei der Kommunikation der aktuellen URL von Iframe zu Parent - ist nicht möglich.

+1

Nun, natürlich können Sie über Frames hinweg mit ['postMessage'] (https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) (und den richtigen CORS-Headern, usw.), aber es erfordert den gerahmten Inhalt zu wissen, welche Nachrichten zu posten sind. –

+0

Kannst du mir ein bisschen mehr helfen? –