Сначала короткое введение, чтобы понять мою проблему.
Моя компания использует ограниченную систему сообщества для интранета, которая не позволяет использовать 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