2011-09-26 19 views
61

Tengo una página principal (en realidad, una JSP) con un iframe dentro;jQuery Force establece el atributo src para el iframe

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

Ahora hay múltiples enlaces en la página principal (traducido de forma dinámica a través de JSP) que se puede tratar de establecer el src para algunos ... URL

Ahora mi pregunta es, usando jQuery (puede ser en directo()), puedo anular eso de tal manera que el atributo "src" para abc_frame siempre tenga algún valor particular (por ejemplo, "somefixedURL")

No puedo capturar el enlace haciendo clic, ya que se crea completamente dinámicamente un poco de código Java y, por lo tanto, estoy tratando de anular el iframe src?

Respuesta

128

Uso attr

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

esta manera se puede obtener y establecer todos los atributos de etiquetas HTML. Tenga en cuenta que también hay .prop(). Ver .prop() vs .attr() sobre las diferencias. Versión corta: .attr() se utiliza para los atributos, ya que están escritos en código fuente HTML y .prop() es para todo lo que JavaScript adjunta al elemento DOM.

+0

La razón por la que esto no funcionaría es después de que la página se haya cargado, otro enlace cambiaría el src a un nuevo valor ... – testndtv

+0

Si solicita el código al final del archivo, su código se ejecutará después de las otras secuencias de comandos. Si su problema es creado por un enlace específico, el usuario hace clic y puede agregar un segundo evento onclick al enlace. De lo contrario, debe usar setTimout/setInterval y repetir el valor de src (feo!). – PiTheNumber

5
$(document).ready(function() { 
    $('#abc_frame').attr('src',url); 
}) 
1

No se puede establecer el src del iframe de FIX o evitar que javascript/form submit cambie su ubicación. Sin embargo, puede colocar el script en onload de la página y cambiar la acción de cada enlace dinámico.

17

si está utilizando jQuery 1.6 o superior, que desea utilizar en lugar de .prop().attr():

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

Ver this question para una explicación de las diferencias.

+3

Enlace interesante, pero tenga en cuenta que la respuesta se ha actualizado porque jQuery _reverted_ 'attr()' comportamiento. En general, no estoy de acuerdo con el uso de '.prop()' aquí porque 'src' es un atributo, no una propiedad, ya que la documentación de la API para' .prop() 'que vinculó lo explica. – PiTheNumber

8

Al generar los enlaces, establezca el destino en la propiedad de nombre iframes y probablemente no tenga que ocuparse de jquery en absoluto.

<a href="inventory.aspx" target="contentframe" title="Title Inventory"> 
<iframe id="iframe1" name="contentframe" ></iframe> 
+0

Es una buena idea usar el método nativo del navegador cuando sea posible, pero creo que el usuario tiene enlaces dinámicos, por lo que debe capturar el attr de clic. – efwjames

+0

¿Qué tan dinámico? Al generar la página, simplemente configure el href a lo que necesite. O incluso en la carga dom simplemente establece el atributo href si es necesario. El punto es no tener que manejar la propiedad src del iframe y esto lo hace posible. –

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

esto es lo que yo uso, sin jQuery necesario para esto. En este escenario particular para cada tabla que tengo con un ícono de exportación de Excel, esto fuerza al iframe adjunto a esa tabla a cargar la misma página con una variable en la Cadena de consulta que la página busca, y si la respuesta encontrada escribe una secuencia con un excel mimetype e incluye los datos para esa tabla.

3

Establecer el atributo src no funcionó para mí. El iframe no mostró la url.

lo que funcionó para mí fue:

window.open(url, "nameof_iframe"); 

espero que ayude a alguien.

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

Este código toma la URL parámetros (? A = 1 & b = 2) a partir de la página que contiene el iframe y les concede a la url base del marco flotante. Funciona para mis propósitos.

Cuestiones relacionadas