jquery
  • iframe
  • 2009-03-31 16 views 14 likes 
    14

    Użyłem iframe, który wygląda tak:zmiana źródło iframe w IE przy użyciu javascript

    <iframe style='width: 330px; height: 278px' scrolling='no' name="iframeId" class="advPlayer" id="iframeId" frameborder="0" src='../../player/iabpreview.php?adid=<?php echo $selectedAdIdx ?>&amp;autoPlay=true'></iframe> 
    

    Gdy klikam na <div>, muszę zmienić źródło iframe. Korzystam z następującego kodu:

    if ($j.browser.msie) {    
        frames['iframeId'].window.location="../player/iabpreview.php?adid="+adId+"&autoPlay=true"; 
    }else { 
        $j(".advPlayer").eq(0).attr("src", "../player/iabpreview.php?adid="+adId+"&autoPlay=true");  
    } 
    

    Działa to w przeglądarce Firefox, ale nie w przeglądarce Internet Explorer.

    Który kod również działa w Internet Explorerze?

    Odpowiedz

    13
    document.getElementById("iframeId").src = "Your URL here." 
    
    +0

    próbowałem this..not pracuje w IE –

    +2

    Huh? Czy jesteś w 100% pewien? To powinno działać w każdym broswercie. –

    +0

    Dla mnie to nie działa w Safari. Zamiast tego zmienia adres URL samej strony. W rzeczywistości wszystkie zamieszczone tu rozwiązania wydają się to robić. To wielka tajemnica. – mcv

    1

    Kolekcja klatek zwraca obiekty okna (lub ich odpowiednik). Chcesz celować w obiekt dokumentu; spróbować zrobić.

    window.frames [ 'iframeId'] document.location.href = ....

    To działa w IE, FF, Safari, i tak dalej, więc nie trzeba dla nieczytelne wykrywanie przeglądarki.

    nb. IIRC zbiór odniesień do ramek nazwa w IE, id w innych przeglądarkach, więc potrzebujesz zarówno atrybutu name i id na - ale już to masz, więc nie martw się!

    0

    Wystarczy użyć następującego kodu.

    var iframe = document.getElementById('IFRAME ID'); // just for clarity 
    iframe .src = 'URL here'; 
    

    To powinno działać z każdą przeglądarką.

    +0

    getElementById dla elementu iframe nie działało w ogóle. Musiałem się do tego odnieść poprzez "okno: