Ich versuche, FancyBox aus dem Iframe zu schließen, aber parent.$
ist immer undefined
. Das ist mein iframe JavaScript:
<script type='text/javascript'
src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'>
</script>
<script type="text/javascript">
jQuery(document).ready(function($){
(function($) {
$.fn.closeFancyBox = function() {
$(this).click(function() {
parent.$.fancybox.close();
});
};
})(jQuery);
$('#cancel').closeFancyBox();
});
});
</script>
Ersetzen parent.$.fancybox.close();
mit alert('clicked');
funktioniert gut. Ich verstehe nicht, warum parent.$
undefined
ist, wenn der Iframe in der gleichen Domäne ist.
Ich benutze WordPress 2.9.1, mit der FancyBox für Wordpress-Plugin.
- Hauptseite:
//server.local/web/test/index.php
- iframe Seite:
//server.local/web/test/wp-content/plugins/wp-test/test.htm
Die erste dieser URLs ist die Hauptseite, die zweite ist die iframe Seite; server.local
ist mein Home Test Server.
Irgendwelche Ideen? Ich kann die gesamte Quelle einfügen, wenn es hilfreich wäre.
Sorry, gesagt haben sollte bin mit, dass ich bewusst bin; Die js, die ich einschloss, war ein Ausschnitt. Ich habe meine Frage so bearbeitet, dass sie dies widerspiegelt - das Übergeben von $ bedeutet, dass ich "jQuery" nicht verwenden muss. – Aleksandr
@Aleksandr Das Übergeben von '$' in einem 'iframe' wirkt sich nicht auf die übergeordnete Seite aus. Tatsächlich fügen Sie eine vollständig separate Instanz von jQuery in den iframe ein. Wenn Sie bemerken, was Sie geschrieben haben, übergeben Sie '$', aber verweisen Sie auf 'parent. $ '. Es ist, als hättest du 'var a = 1; alert (obj.a); 'Sie würden nicht erwarten, dass sich die beiden Elemente auf denselben Wert beziehen, es sei denn, es wurde irgendwo im Code eine Zuweisung zugewiesen. –
Sie haben Recht, das macht Sinn. Mit dem folgenden Code jedoch: 'jQuery ('# cancel'). Click (function() {parent.jQuery.fancybox.close();});' Ich bekomme immer noch 'undefined' Fehler in Firebug:' parent. jQuery.fancybox ist nicht definiert'. Hast du eine Idee, warum das so sein könnte? Vielen Dank für Ihre Hilfe bis jetzt! Ich bin immer noch sehr neu in JavaScript und Codierung im Allgemeinen. – Aleksandr