Есть ли способ узнать, изменилось ли содержимое iframe?

#javascript #html #iframe #page-refresh

#javascript #HTML #iframe #обновление страницы

Вопрос:

Я ищу способ в js проверять каждые x секунд, изменилось ли содержимое моего iframe, и если да, обновите его, чтобы увидеть изменения. Я хочу это сделать, потому что простое обновление каждые x секунд делает его очень заметным и заставляет iframe каждый раз возвращаться к началу полосы прокрутки. src iframe находится в том же домене, поэтому у меня нет проблем с политикой того же происхождения.

Спасибо!

Ответ №1:

Это просто. Выполняйте вызовы Ajax для извлечения содержимого страницы через указанный интервал времени. Сравните новую длину содержимого с предыдущей и сбросьте src атрибут iframe , если есть какая-либо разница.

 const URL = 'https://stackoverflow.com';
let content = '';
setTimeout(() => {
  $.ajax({
    url: URL,
    type: 'GET',
    success: (res) => {
      if (content.length !== res.length) {
        content = res;
        $('#myframe').attr('src', URL);
      }
    },
    error: (jqXHR, textStatus, errorThrown) => {
      console.error(textStatus);
    }
  });
}, 5000); // Check difference and refresh iframe in 5 seconds interval 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<iframe id="myframe" src="https://stackoverflow.com"></iframe>