Функція ifload onload невизначена

Я розробляю додаток Rails. Однією з функцій є надання клієнтам можливості попереднього перегляду сторінок HTML. Я завантажую ці попередні перегляди в IFRAME, так що CSS/стиль контейнера попереднього перегляду відокремлений від CSS/стилю самого попереднього перегляду. Поки що це працює дуже добре.

Одна з проблем, які я маю, - це автоматичне змінення розміру IFRAME після його завантаження. Я прекрасно працюю в Chrome, просто додаючи функцію до події load IFRAME через jQuery:

var show_preview = function() {
  $("#preview-loading").hide();
  $(this).show();
  this.style.height = this.contentWindow.document.body.scrollHeight + "px";
  return this.style.width = this.contentWindow.document.body.scrollWidth + "px";
}

$(function() {     
  return $("#preview_frame").load(function() {
    show_preview();
  });
});

Проте в IE це не дуже добре, однак, подія з'являється не звільняється, коли сторінка завантажується першим.

Одне робоче середовище, яке я намагаюся, - призначити функцію безпосередньо атрибуту onload IFRAME, як так:

 <iframe onload="show_preview();" ...></iframe>

Проблема, яку я маю тут, полягає в тому, що IFRAME не може знайти функцію show_preview() , якщо вона визначена в моєму файлі JavaScript. Якщо я витягнув функцію і помістив його в тег SCRIPT над IFRAME, все працює нормально.

Оцініть будь-яку допомогу - впевнений, що я роблю щось з кісткою.

Макс

2

1 Відповіді

Прикріпіть свою функцію до об'єкта вікна, тоді він буде видно у вашому html-коді:

window.show_preview = function() { ... }
2
додано
Чудово - дякую
додано Автор maxenglander, джерело
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram