2016-04-26 8 views
0

Ich habe Javascript/iFrame Beiträge auf StackOverflow für ca. 45 Minuten nachgeschaut und ich habe einige großartige Ressourcen gesammelt, aber ich kann das Javascript nicht richtig in einem iFrame funktionieren. Ich habe zwei Screenshots von einer Website beigefügt, die ich in meinem eigenen iFramed habe. Der iFrame öffnet sich mit einem geöffneten Menü, das 60% des Rahmens einnimmt. Ich möchte dem Menü eine Klasse hinzufügen, um sie beim Laden meiner Seite automatisch zu schließen. Ich habe das richtige JS, denke ich, aber ich kann es nicht funktionieren lassen. Die Klasse wird überhaupt nicht hinzugefügt.Anpassen von HTML in iFrame - Javascript funktioniert nicht

Menu opened Menu closed Das ist mein iFrame und Javascript, um die div-ID "erweiterten" Klasse zu ändern. Ich weiß, es klingt albern, aber erweitert ist der Klassenname für das geschlossene Menü. Jede Hilfe wäre willkommen! Vielen Dank.

<iframe src="http://dayzdb.com/map#2.065.045" style="width:500px; height:300px;" id="dayzdb"></iframe> 

     <script>$("#dayzdb").contents().find("#mapContainer").addClass("expanded")</script> 

anstelle der HTML-Posting (da es lang ist) Ich habe die Website-Link gepostet, wo Sie Element auf der navbar inspizieren kann es zu sehen.

http://dayzdb.com/map

+0

Ich glaube nicht, Sie brauchen '.contents()', wenn Sie tun '.find()' direkt nach, denke ich '.find()' ausreichend ist. Könnten Sie auch einige HTML-Inhalte veröffentlichen, die im iFrame enthalten sind? Es könnte uns helfen, herauszufinden, warum es nicht richtig ausgewählt wird. –

+0

Ist der 'iframe' aus der gleichen Domäne? Wenn nicht, unterliegen Sie der [gleichen Ursprungsrichtlinie] (https://en.wikipedia.org/wiki/Same-origin_policy). –

+0

Gute Frage, ich werde den HTML auch anhängen! Und ich werde auch versuchen, Inhalt zu entfernen und sehen, ob das funktioniert! –

Antwort

0

Verwenden Sie die gleiche Domain in Ihrer Seite und Ihre iframe? Vergessen Sie nicht die cross-domain Richtlinie, sonst wird es nicht funktionieren! Wenn Sie die Kontrolle über beide Websites haben, können Sie die Methode postMessage verwenden, um Daten zwischen verschiedenen Domänen zu übertragen. Ein sehr einfaches Beispiel:

// framed.htm: 
window.onmessage = function(event) { 
    event.source.postMessage(document.body.innerHTML, event.origin); 
}; 

// Main page: 
window.onmessage = function(event) { 
    alert(event.data); 
}; 

// Trigger: 
// <iframe id="myframe" src="framed.htm"></iframe> 
document.getElementById('myframe').contentWindow.postMessage('','*'); 
Verwandte Themen