Отображение пользователем созданного недопустимого содержимого HTML без искажения страницы

#php #html

#php #HTML

Вопрос:

У меня есть веб-сайт, который позволяет пользователю сохранять текстовое содержимое, а затем отображать его как есть. Пользователь может использовать теги HTML для создания своих данных так, как он хочет — дизайн, шрифты, разделы, таблицы и так далее…

Чтобы отобразить сохраненные данные, я направляю пользователя на страницу с собственным верхним / нижним колонтитулом, а его данные посередине. Проблема возникает, когда у пользователя есть несколько недопустимых HTML-тегов или незакрытых, тогда это мешает моему собственному HTML-заголовку / нижнему колонтитулу, и вся страница запутывается.

Есть ли способ инкапсулировать данные пользователя, чтобы это не повредило странице?

Ответ №1:

Вы можете попробовать загрузить его iframe . Не тестировал, но я думаю, что это должно сработать.

Ответ №2:

вы можете использовать iframe с фиксированной шириной и высотой.

Ответ №3:

Предложение Iframe хорошее, но его было недостаточно. Поскольку я хотел, чтобы он отображался так, как будто он был частью страницы, и я не знал, какова длина и размер пользовательских данных, решение, которое я использовал, такое:

Создана страница, на которой отображаются только пользовательские данные. Открыл его в iframe, который был расположен между верхним и нижним колонтитулами моей главной страницы. Теперь для хитрости — когда у пользователя много данных, чтобы избежать полос прокрутки в середине страницы, я использовал этот скрипт для события загрузки iframe:

   function setHeight()
  {
  //get page height
  var the_height=
  document.getElementById('userFrame').contentWindow.document.body.scrollHeight;

  //set iframe height
  document.getElementById('userFrame').height=the_height;
  }
  

Таким образом, при загрузке страницы высота iframe будет меняться в соответствии с ее размером, сдвигая нижний колонтитул вниз.
После этого просто нужно было установить границу iframe на «none», и страница выглядит нормально.