Tengo una página que añade dinámicamente IVS a la página a través de jQuery:jQuery SVG-objeto de evento de carga etiqueta
grid.append($('<object>')
.load(function() {
// do stuff
alert('loaded')
})
.attr({
id: 'tile',
type: 'image/svg+xml',
width: Math.round(tile_w),
height: Math.round(tile_h),
data: 'map/base.svg'
})
);
Necesito acceso al documento SVG (para "empujar" una variable en el contexto de la escritura SVG) pero el SVG tiene que ser cargado para eso. Mi problema es que no funciona el evento de carga. No se muestra ninguna alerta.
¿Cómo hacer?
Editar: Parece como jQuery simplemente impide a enlazar un evento de "carga" a un elemento no-imagen-o-documento, por lo que sólo tiene que utilizar la función addEventListener "oficial"() (no admitida por estúpida IE , pero esto no es problema para mí):
grid.append($('<embed>')
.attr({
id: 'tile' + i,
type: 'image/svg+xml',
width: Math.round(tile_w),
height: Math.round(tile_h),
src: 'map/base.svg'
})
.css({
position: 'absolute',
left: Math.round(p.x),
top: Math.round(p.y)
}).each(function (i){
this.addEventListener ('load', function (e) {
alert('loaded')
})
})
);
Como me parece que está tratando de usar 'load' no como una función' ajax' sino simplemente como un controlador de eventos DOM'load'. Hay muchas preguntas sobre SO relacionadas con la carga DOM y el elemento de objeto – user907860
Hm, quiero el evento load pero la llamada ajax http://api.jquery.com/load-event/ – Euro
La pregunta http: // stackoverflow.com/questions/5926424 es sobre el mismo problema pero no proporciona una solución. – Euro