Estoy usando javascript para pasar una dinámica url del iframe src. pero a veces, la url no existe, ¿cómo podría yo detectar la no-existir url de antemano, así que no puedo ocultar el iframe que con un error 404.

InformationsquelleAutor Mario | 2012-06-07

5 Comentarios

  1. 52

    Debido a mi baja reputación no podía comentar sobre Derek 朕會功夫 la respuesta.
    He tratado de que el código de como es y no funcionaba bien. Hay tres cuestiones sobre Derek 朕會功夫 del código.

    1. La primera es que el tiempo para async enviar la solicitud y cambiar su propiedad ‘status’ es más lento que para ejecutar la siguiente expresión: if(request.status === «404»). Por lo que la solicitud.el estado finalmente, debido a internet de banda, permanecen en estado 0 (cero), y no conseguir el código justo debajo de si. Para arreglar eso, es fácil: cambiar «true» a «false» en el método abierto de la petición ajax. Esto hará una breve (o no tanto) de los bloques en el código (debido a la llamada sincrónica), pero cambiará el estado de la solicitud antes de llegar a la prueba en si.

    2. La segunda es que el estado es un entero. El uso de ‘===’ javascript operador de comparación que estamos tratando de comparar si el lado izquierdo objeto es idéntico a uno en el lado derecho. Para hacer este trabajo hay dos formas:

      • Quitar las comillas que rodea 404, lo que es un número entero;
      • Utilizar el javascript del operador’==’, por lo que pondrá a prueba si los dos objetos son similares.
    3. La tercera es que el objeto XMLHttpRequest sólo funciona en los navegadores modernos (Firefox, Chrome y IE7+). Si quieres que el fragmento de código para trabajar en todos los navegadores que tienes que hacer en el camino W3Schools sugiere: w3schools ajax

    El código que me dio fue:

    var request;
    if(window.XMLHttpRequest)
        request = new XMLHttpRequest();
    else
        request = new ActiveXObject("Microsoft.XMLHTTP");
    request.open('GET', 'http://www.mozilla.org', false);
    request.send(); //there will be a 'pause' here until the response to come.
    //the object request will be actually modified
    if (request.status === 404) {
        alert("The page you are trying to reach is not available.");
    }
    • plus 1 debido a su baja reputación. (y la gran respuesta :))
    • NO, NO, NO. Por favor, no nada enlace con el W3C para W3 Schools. Ellos no están afiliados de ALGUNA MANERA.
    • Sólo tenga en cuenta que: Sincrónica XMLHttpRequest en el hilo principal está en desuso debido a sus efectos perjudiciales para la experiencia de usuario final. Para obtener más ayuda, consulte xhr.spec.whatwg.org.
    • Donde has encontrado a nadie menciona la relación entre el W3C y W3Schools? Nadie mencionó W3C aquí.
    • Upvote para que pueda tener la reputación suficiente para comentar sobre Derek 朕會功夫 la respuesta ! (Buena respuesta, no dejes que nada te detenga bro)
    • Cuidado chicos, ActiveXObject sólo funciona en IE.
    • Esta respuesta ya no funciona (?!)

  2. 28

    El uso de un XHR y ver si responde un 404 o no.

    var request = new XMLHttpRequest();  
    request.open('GET', 'http://www.mozilla.org', true);
    request.onreadystatechange = function(){
        if (request.readyState === 4){
            if (request.status === 404) {  
                alert("Oh no, it does not exist!");
            }  
        }
    };
    request.send();

    Pero tenga en cuenta que sólo funcionará en el mismo origen. Por otro host, usted tendrá que el uso de un lenguaje en el servidor a hacer eso, que usted tendrá que descubrirlo por ti mismo.

    • But notice that it will only work on the same origin.
    • estoy usando chrome, en este trabajo?
    • Sí, siempre está en el mismo origen por el mismo origen de la política.
    • @A1rPun – …..Fijo.
    • ¿cómo u agregar el gris BG para comentar? #curioso
    • Se envuelve en comillas simples inclinadas (`)

  3. 5

    He encontrado esto funcionó en mi escenario.

    La jqXHR.el éxito (de), jqXHR.error(), y jqXHR.completa() métodos de devolución de llamada que se introdujo en jQuery 1.5 están en desuso como de jQuery 1.8. Para preparar el código para su eventual eliminación, uso jqXHR.hecho(), jqXHR.fail(), y jqXHR.siempre() en su lugar.

    $.get("urlToCheck.com").done(function () {
      alert("success");
    }).fail(function () {
       alert("failed.");
    });
    • esto no es javascript, este es jQuery. No creo que la gente viene aquí en busca de jQuery respuestas.
    • Estoy feliz de aceptar un jQuery respuesta. 🙂
  4. 1

    Usted puede intentar y hacer un simple OBTENER en la página, si usted consigue un 200 espalda significa que la página existe. Intenta esto (usando jQuery), la función es el éxito de la función de devolución de llamada en un éxito de la carga de la página. Nota: esto sólo funcionará en los sitios dentro de su dominio para evitar XSS. Otros dominios tendrán que ser manejados de lado de servidor

    $.get(
       yourURL,
       function(data, textStatus, jqXHR) {
          //load the iframe here...
       }
    );

Dejar respuesta

Please enter your comment!
Please enter your name here