/ / Jak uruchomić dynamicznie ładowany plik js w iframe? - jquery, iframe

Jak uruchomić dynamicznie załadowany plik js w elemencie iframe? - jquery, iframe

Mam następujące:

$(document).ready(function() {

var myIframe = document.getElementById("myIframe");
var element = myIframe.contentDocument.createElement("script");
element.setAttribute("src", "/javascripts/library/jquery/jquery.min.js");
myIframe.contentWindow.document.getElementsByTagName("head")[0].appendChild(element);

$("#myIframe", top.document).load(function() {
alert("iframe has loaded");

var element = document.getElementById("myIframe").contentDocument.createElement("script");
element.setAttribute("src", "/javascripts/stuff.js");
myIframe.contentWindow.document.getElementsByTagName("body")[0].appendChild(element);
});

});

Otrzymuję ostrzeżenie o „załadowaniu iframe”.

stuff.js zawiera

$("body").css("backgroundColor", "yellow");

Oczekiwałbym więc, że tło tego elementu iframekolor zmieniłby się na żółty po załadowaniu iframe ... ale nic się nie dzieje. Próbowałem nawet otoczyć zawartość pliku stuff.js w bloku $ (document) .ready, ale uzyskałem te same wyniki.

Jeśli zaznaczę wszystko i wyświetlę źródło dla elementu iframe, Izobacz, że jquery.min.js i stuff.js znajdują się w ramkach iframe. Jeśli wstawię to źródło do osobnego pliku HTML i uruchomię go, kolor tła dokumentu zmieni się zgodnie z oczekiwaniami.

Jak mogę uruchomić mój skrypt javascript w pliku stuff.js, aby działał w ramce iframe po załadowaniu ramki iframe?

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz to również zrobić w bardziej jQuery sposób.

$("<script/>", {
src: "/path/to/javascript.js",
type: "text/javascript"
}).appendTo($("#iframe").contents().find("body"));

0 dla odpowiedzi nr 2

Do diabła, tak, wymyśliłem to!

Okazuje się, że to nie działało, ponieważ ustawiłem myIframe.contentDocument.designMode na „on”. Komentowanie sprawiło, że zadziałało. Mam nadzieję, że mogę go włączyć po załadowaniu pliku.j.j i wszystko będzie dobrze.