Catch X-Frame-Options Error in javascript

前端 未结 2 1222
你的背包
你的背包 2020-12-16 02:31

Is there any way to catch an error when loading an iframe from another domain. Here is an example in jsfiddle. http://jsfiddle.net/2Udzu/ . I need to show a message if I rec

2条回答
  •  遥遥无期
    2020-12-16 03:16

    If both the parent site and the iframe-url is accessible by you, a way to know that the page is fully loaded (without "sameorigin" issues) is sending a message (postMessage) from the child to the parent like this;

    Parent site (containing the iframe)

    //Listen for message
    window.addEventListener("message", function(event) {
        if (event.data === "loading_success") {
            //Yay
        }
    });
    
    
    //Check whether message has come through or not
    iframe_element.onload = function () {
        //iframe loaded...
        setTimeout(function() {
            if (!iframeLoaded) {
                //iframe loaded but no message from the site - URL not allowed
                alert("Failure!");
            }
        }, 500);
    };
    

    Child site (URL from the iframe)

    parent.postMessage("loading_success", "https://the_origin_site.url/");
    

    You could get the_origin_site.url by using a server-side language like PHP if you want the possibility for multiple origins


    The accepted answer only works if the domain you're trying to put in an iframe is the same as the one you're requesting from - this solution works for cross-domain where you have access to the scripts on both domains.

提交回复
热议问题