代码之家  ›  专栏  ›  技术社区  ›  avernet

获取在iframe表面发生的javascript异常

  •  2
  • avernet  · 技术社区  · 17 年前

    情况如下:

    • 一页(一页) iframe.html )有一个iframe正在加载另一页( iframe-content.html )
    • iframe-content.html文件 加载到iframe中。
    • 我希望这个异常对浏览器可见(例如显示在firefox错误控制台或firebug中)。

    我看到的是:

    1. 什么时候? IfRAM.HTML 最初加载,并且加载 iframe-content.html文件 具有 src="iframe-content.html" ,在Firebug中显示javascript异常。
    2. 但是,如果页面加载在javascript中( document.getElementById('iframe').src = 'iframe-content.html' )未显示异常。

    您可以通过以下方式复制:

    1. http://avernet.googlepages.com/iframe.html 使用Firefox。
    2. 你会看到例外 iframe-content.html文件 已加载。
    3. 点击按钮:iframe的内容会再次加载,但这次这个异常不会显示在firebug中。

    有没有一种方法在3有异常显示,而不是它被静默忽视?(不能在设置SRC的JS代码周围使用try/catch,因为此代码在将页面加载到iframe之前立即返回。)

    1 回复  |  直到 17 年前
        1
  •  2
  •   Mikko Tapionlinna    17 年前

    似乎您的iframe页面第二次没有真正加载。或者它是从缓存加载的,错误被忽略。这很有趣,但我想我找到了一个解决办法。

    function setContent() {
        try {
            console.log("Loading iframe content");
            document.getElementById('iframe').src = 'iframe-content.html?foo=bar';
        } catch (e) {
            console.log("Caught", e);
        }
        console.log("Done loading");
    }
    

    这样就会出现错误。

    我所做的就是欺骗浏览器,让他们认为我正在加载一个全新的页面作为URL更改后的参数。

    'iframe-content.html?foo=bar';
    

    你可以用一个变化的时间戳替换我的“bar”字符串。当然,它会避免缓存,但也会强制它生成您希望的错误。