IFrame oculto: no se muestra en el historial [jQuery]

Agregué cargas de archivos ajax a mi sitio hace bastante tiempo usando un iFrame oculto. Utilizo jQuery en mi sitio y conseguí que todo funcionara muy rápido. Sin embargo, hay un problema que no he podido solucionar: cada vez que hago una nueva solicitud ajax en mi iFrame, la página solicitada se agrega al historial de mi navegador. Sé que se han hecho bastantes preguntas sobre este tema, pero no pude encontrar una respuesta suficiente.

Mi código jQuery:

$(document).bind('ready', function() {
    // Add the iFrame to the DOM (iFrame is needed because of file uploads).
    $('body').append('<iframe id="post_form" name="post_form" style="display: none;" src="javascript:false"></iframe>');

    // Show forms on click.
    $('a.own, a.sale, a.spotted').bind('click', function(event) {
        // Animate and clear the boxes.
        $('.box').slideFadeOut(300);
        $('form.' + $(this).attr('class') + ':hidden').delay(300).slideFadeIn(300)[0].reset();

        return false;
    });

    // Get the form response (from iFrame because of file uploads).
    $('iframe#post_form').bind('load', function() {
        var response = $(this).contents().find('body').html()

        if (response.length) {      
            $('div#message').html(response).animate({
                opacity: 'show',
                height: 'show',
                borderWidth: '1px'
            }, 300);
        } else {
            $('.box').slideFadeOut(300);
        }
    });
});

En mi código HTML, establecí el atributo de destino de mi formulario en #post_form. También intenté crear un nuevo iFrame para cada solicitud o configurar el frame.location manualmente, pero no pude hacer que eso funcionara en combinación con la carga de archivos. ¿Alguien puede ayudar?

¡Gracias!

preguntado el 16 de mayo de 11 a las 19:05

¿Cuál es exactamente tu problema con tener esas páginas dentro del historial? -

Rompe el botón de retroceso del navegador y es extraño que el usuario vea una página en el historial que ni siquiera sabe que existe. -

El problema por lo que veo es que tu no use ajax, envía un formulario de la manera habitual, por lo que el historial crecerá. Podrías usar un cargador flash, no deberían afectar el historial. -

Sé que puedes usar un cargador flash, pero sé que también hay alternativas sin flash. Sé que actualmente no uso ajax (porque hago que el formulario configure el iFrame directamente), pero no puedo averiguar cómo configurar el contenido del iFrame cuando uso un formulario de carga de archivos. Obviamente, no puedo usar XMLHTTPRequest debido a la carga de archivos. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.