Ответ 1
Вы можете inject другую таблицу стилей, если окно не является верхним окном.
if (window.top!=window.self)
{
// In a Frame or IFrame
}
else
{
// Not in a frame
}
Есть ли какой-либо способ, поскольку в заголовке указано "Показать страницу по-другому (css), если внутри iframe". Я ищу метод jQuery/JavaScript для потенциального использования другой таблицы стилей CSS, если сайт находится в пределах iframe. Любые идеи?
Вы можете inject другую таблицу стилей, если окно не является верхним окном.
if (window.top!=window.self)
{
// In a Frame or IFrame
}
else
{
// Not in a frame
}
Вместо того, чтобы вводить новую таблицу стилей, я бы предложил добавить класс CSS к body
.
Пример jQuery:
$(function() {
if (window.self != window.top) {
$(document.body).addClass("in-iframe");
}
});
Теперь вы можете стилизовать вещи по-другому, например
.in-iframe p {
background: purple;
}
if( self != top ) {
headTag = document.getElementsByTagName("head")[0].innerHTML;
var frameCSS = headTag + '<style type="text/css">**insert CSS here**</style>';
document.getElementsByTagName('head')[0].innerHTML = frameCSS;
}
Если страница является единственной отображаемой страницей, верхняя, родительская, я и окно будут равны. Если страница хранится в наборе фреймов, то self и top не будут равны. Если страница - это страница, содержащая набор фреймов, и сама она не удерживается в наборе фреймов, то сами и верх будут равны.
Вот быстрый и удобный для дизайнера подход с использованием vanilla JS. Только одна строка JS и внешний вид могут управляться с помощью CSS/SASS/LESS.
Поместите это в элемент head
перед загрузкой CSS или JS:
// Sets the class of the HTML element using vanilla JavaScript
document.documentElement.className += (window.self == window.top ? " top" : " framed");
Затем в вашем CSS/SASS/LESS вы можете скрыть, показать и настроить на основе того, какой класс был применен.
/* Hide site navigation when in an iframe */
html.framed .site-nav,
html.framed .site-footer {
display: none;
}
PSA: рассмотрите возможность использования X-Frame-Options, чтобы ваша тяжелая работа не была захвачена.