Получение исключения JavaScript в поверхности iframe - PullRequest
2 голосов
/ 31 марта 2009

Вот ситуация:

  • На странице (iframe.html) есть фрейм, загружающий другую страницу (iframe-content.html).
  • Ошибка JavaScript может возникнуть при загрузке iframe-content.html в iframe.
  • Мне бы хотелось, чтобы это исключение было видно браузеру (например, показано в консоли ошибок Firefox или Firebug).

Вот что я вижу:

  1. Когда iframe.html изначально загружен и загружает iframe-content.html с src="iframe-content.html", исключение JavaScript отображается в Firebug.
  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 способ показать исключение вместо того, чтобы его игнорировали? (Вы не можете использовать try / catch для кода JS, который устанавливает src, так как этот код возвращается непосредственно перед загрузкой страницы в iframe.)

1 Ответ

2 голосов
/ 31 марта 2009

Кажется, что ваша страница 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" изменяющейся отметкой времени. Конечно, это позволит избежать кэша, но также вынудит его генерировать ошибку, как вы и хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...