Как обнаружить родительское событие прокрутки из iframe => get iframe-position-fixed-polyfill work - PullRequest
0 голосов
/ 13 сентября 2018

Сначала короткое введение, чтобы понять мою проблему.

Моя компания использует ограниченную систему сообщества для интранета, которая не позволяет использовать javascript на страницах. Вы можете разместить код только через внутренний редактор, и после сохранения javascript будет автоматически удален. Мой обходной путь - использовать страницу сообщества в качестве родительской страницы и загружать мой контент, расположенный на sharepoint, через iframe. Это не элегантно, но работает отлично, без проблем, и я могу использовать JavaScript. Я спросил у нашего ИТ и получил разрешение на это.

Что я хочу сделать

Я хочу добавить вертикальную строку меню, которая остается в фиксированном положении с левой стороны. Первым решением является кодирование этой строки меню на каждой родительской странице с использованием html и css. Это работает нормально, но если у меня есть изменения в меню, я должен обновить код на каждой родительской странице. Это отнимает много времени и может привести к ошибкам.

Более элегантно было бы сохранить строку меню в отдельном файле и загрузить этот файл на каждой странице. Хотя родительская страница не может использовать JavaScript, я должен загрузить ее через страницу iframe.

вызов iframe внутри родительской страницы:

<iframe src="https://sharepoint.abc.com/index.aspx"></iframe>

загрузка меню через страницу iframe "index.aspx":

<div id="includedMenuBar"></div>
<script src="demo/js/jquery-3.2.1.js"></script>
<script> 
    $(function(){
      $("#includedMenuBar").load("menubar.aspx"); 
    });
</script>

Это работает отлично, но теперь используемые css position: fixed; и top: 100px; для меню ориентируются на странице iframe index.aspx. Если я теперь прокручиваю родительскую страницу, строка меню фиксируется на странице iframe, но прокручивается, потому что страницы iframe перемещаются посредством прокрутки родительской страницы.

Чтобы решить эту проблему, я попытался iframe-position-fixed-polyfill , который прекрасно работает, но нуждается в том же домене для родительской страницы и страницы iframe. Но моя родительская страница загружается из интрасети компании, а моя страница iframe загружается с точки доступа. Поэтому мне нужна междоменная связь.

Решением может быть междоменный обработчик событий, например PostEvent . Но я не смог разместить javascript на родительской странице.

Проблема

Как я могу заставить iframe-position-fixed-polyfill работать, даже если мне нужно междоменное соединение и я не могу разместить какой-либо javascript внутри родительской страницы?

Может быть, есть более простое решение для фиксированной строки меню, загруженной через страницу iframe, которую я не вижу?

Большое спасибо за вашу помощь.

С уважением, Michael

1 Ответ

0 голосов
/ 27 сентября 2018

Боже мой.Держите это просто должно быть устройство.Мое решение, которое работает для меня.Загрузите строку меню через другой iframe на родительской странице.Сделайте этот iframe фиксированным через вложенный div.

<div style="position: fixed; top: 385px">
  <iframe src="menubar.html" style="border: currentColor; border-image: none; overflow: hidden;" width="110" height="300"></iframe>
</div>

Нет необходимости в языке scipt.

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