Проверка, если моя страница встроена в iframe - PullRequest
5 голосов
/ 02 мая 2011

Я хотел бы проверить, встроена ли моя страница (php) в iframe или нет, чтобы реализовать другое поведение. Любая идея, как проверить это. Я также использую jQuery, если это помогает.

Дополнение: Мне особенно интересно, есть ли способ проверить это на сервере, а не на клиенте с Javascript

Ответы [ 4 ]

13 голосов
/ 02 мая 2011

Вы можете использовать JavaScript, я думаю, что-то вроде следующего должно работать:

if (top != self) {
    // you're in an iframe, or similar.
}

Ссылка на оригинал, meyerweb, статья .

Отредактировано в связи с обновлением вопроса:

Добавление : Мне особенно интересно, есть ли способ проверить это на сервере, а нев клиенте с Javascript

Это не может быть «проверено» на стороне сервера, но вы могли бы использовать X-Frame-Options заголовок ,Есть два варианта:

  1. DENY: предотвращает создание ресурса в любом месте (в любом случае, если браузер поддерживает заголовок X-Frame-Options) или
  2. SAMEORIGIN: который позволяет создавать ресурс только по страницам из того же домена, во многом как политика JavaScript того же происхождения.

Чтобы использовать это, вам нужно настроить сервер для отправки соответствующего заголовка;хотя конкретные советы для этого нельзя дать, не зная, на каком сервере вы работаете;хотя в связанной статье в Mozilla Developer Center действительно есть опция Apache.

4 голосов
/ 02 мая 2011

возможно:

var isInIFrame = (window.location != window.parent.location) ? true : false;
3 голосов
/ 02 мая 2011

Я не знаю, есть ли конкретный JQueryway, но в ванильном javascript вы можете просто;

if (top != self)
  alert("framed!")
0 голосов
/ 02 мая 2011
<script language="JavaScript" type="text/javascript">
function InFrame()
{

  if (top.location != location) {
  //Do whatever you need- your site is in an iframe.

  //This will redirect to your site if you need to
  //top.location.href = document.location.href ;
  //
  }
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...