web-dev-qa-db-fra.com

jQuery Force définit l'attribut src pour iframe

J'ai une page principale (en fait un JSP) avec un iframe dedans comme;

<iframe name="abc_frame" id="abc_frame" src="about:blank" frameborder="0" scrolling="no"></iframe>

Maintenant, il y a plusieurs liens sur la page principale (rendus dynamiquement via JSP) qui peuvent essayer de définir le src sur une URL ...

Maintenant, ma question est la suivante: avec jQuery (may be live ()), puis-je le remplacer de telle sorte que l'attribut "src" pour abc_frame ait toujours une valeur particulière (par exemple, "une URL corrigée")

Je ne peux pas capturer le lien en cliquant, car il est complètement créé dynamiquement via un code Java) et, par conséquent, j'essaie de remplacer le code iframe?

71
testndtv

Utilisez attr

$('#abc_frame').attr('src', url)

De cette façon, vous pouvez obtenir et définir chaque attribut de balise HTML. Notez qu'il y a aussi .prop(). Voir . Prop () vs .attr () à propos des différences. Version courte: .attr() est utilisé pour les attributs car ils sont écrits en code source HTML et .prop() est pour tout le code JavaScript attaché à l'élément DOM.

149
PiTheNumber

si vous utilisez jQuery 1.6 et plus, vous voulez utiliser . prop () plutôt que .attr():

$('#abc_frame').prop('src', url)

Voir cette question pour une explication des différences.

17
kalyfe

Lors de la génération des liens, définissez la cible sur la propriété de nom iframes et vous n'aurez probablement pas à traiter avec jquery.

<a href="inventory.aspx" target="contentframe"  title="Title Inventory">
<iframe id="iframe1" name="contentframe"  ></iframe>
8
Brian Rizo
$(document).ready(function() {
    $('#abc_frame').attr('src',url);
})
7
Jayendra

La définition de l'attribut src n'a pas fonctionné pour moi. L'iframe n'affichait pas l'URL.

Ce qui a fonctionné pour moi a été:

window.open(url, "nameof_iframe");

J'espère que ça aide quelqu'un.

4
Hari
<script type="text/javascript">
  document.write(
    "<iframe id='myframe' src='http://www.example.com/" + 
    window.location.search + "' height='100' width='100%' >"
  ) 
</script>  

Ce code prend les paramètres d'URL (? A = 1 & b = 2) de la page contenant l'iframe et les attache à l'URL de base de l'iframe. Cela fonctionne pour mes besoins.

4
Arend

Vous ne pouvez pas définir la source de FIX iframe ou empêcher javascript/form submit de changer son emplacement. Cependant, vous pouvez mettre le script sur onload de la page et changer l'action de chaque lien dynamique.

1
Jan Pfeifer
$(".Excel").click(function () {
    var t = $(this).closest(".tblGrid").attr("id");
    window.frames["Iframe" + t].document.location.href = pagename + "?tbl=" + t;
});

c'est ce que j'utilise, pas besoin de jquery pour cela. dans ce scénario particulier, pour chaque table avec une icône d'exportation Excel, cela force l'iframe attaché à cette table à charger la même page avec une variable dans la chaîne de requête recherchée par la page, et si la réponse est trouvée écrit un flux avec un Excel type MIME et inclut les données pour cette table.

1
vernmic