Просмотр полной версии : Предупрежение во фрейме с исключеним своего сайта
Пытаюсь сделать примитивную защиту от показа своего сайта во фремах.
Вывести предупреждение получилось, но необходимо, чтобы его не было на моём сайте.
Погуглив, я собрал код ниже, но он выводит предупреждение и на своём.
Помогите пож изменить, чтобы предупреждения его не было при открытии во фреймах(ифрейме) на своём сайте
var url = window.location.href;
if(url.indexOf("mysite.ru") != -1){
if (self != top) {;
document.write('<p style="margin:100px 0 300px 0; text-align:center">Это чужой сайт!<br><br> Настоявший адрес: <a href="'+ self.location.href + '" target="_top">' + self.location.href + '</a></p><hr>');
}
}
Пытаюсь сделать примитивную защиту от показа своего сайта во фремах.
Дык!
Свойство top позволяет легко проверить, во фрейме ли находится текущий документ
if (window == top) {
alert( 'Этот скрипт является окном верхнего уровня в браузере' );
} else {
alert( 'Этот скрипт исполняется во фрейме!' );
}
https://learn.javascript.ru/iframes
Забыл сказать
Замена window.location.href на window.top приводит к ошибке в консоли Error: Permission denied to access property "indexOf"
легко проверить,
Проверить наличие фрейма не проблема.
У меня проблема сделать исключение для своего домена. А еще лучше - для "белого списка", а то вдруг понадобится где-то ещё разрешить. ;)
Помогите пож изменить, чтобы предупреждения его не было при открытии во фреймах(ифрейме) на своём сайте
Как вариант...
Главная страница
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<iframe src="tmp1.html" style="height:60px"></iframe>
</body>
</html>
Страница tmp1.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
alert(window.parent.location.href)
</script>
</head>
<body>
<p>Test</p>
</body>
</html>
Как вариант...
Может всё же стоит почитать вопрос/задачу?
WebDer, а чего тебе теперь не хватает для ее решения? :blink:
Грубо говоря я не знаю чем заменить window.location.href чтобы можно было вычислить адрес главного окна и что бы оно работало - не вызывало ошибок indexOf.
Ну или может есть какой-то др. метод вывести предупреждение на чужом, не выводя на своём (или белом списке в идеале)
У меня проблема сделать исключение для своего домена. А еще лучше - для "белого списка", а то вдруг понадобится где-то ещё разрешить.
Читай содержимое
window.parent.location.href
и делай выводы...
а чего тебе теперь не хватает для ее решения?
Скорее не чего, а кого. Того, кто бы мог прочитать задачу и подсказать решение.
я не знаю чем заменить window.location.href
Я тебе это написал выше...
window.parent.location.href
Это адрес родителя. С ним и работай.
Если он конечно будет определен... :)
Скорее не чего, а кого. Того, кто бы мог прочитать задачу и подсказать решение.
Ты слеп. :(
Читай содержимое
window.parent.location.href
var url = window.parent.location.href;
приводит к Error: Permission denied to access property "href"
приводит к Error: Permission denied to access property "href"
Я тебе показал тестовый пример на котором у меня все работает.
https://javascript.ru/forum/events/78275-preduprezhenie-vo-frejjme-s-isklyuchenim-svoego-sajjta.html#post511868
От тебя я пока не видел ничего... :no:
Пока только детские обидки ты писал...
От тебя я пока не видел ничего...
Пока только детские обидки ты писал...
:) Ты таки почитать попробуй, если правда есть желание помочь.
Какие нафик html-файлы.. (да ещё с подключением всяких фреймворков..)
Но если хочется htnl, то пож:
index.html
<html>
<head>
<meta charset="utf-8">
<title>IFRAME TEST</title>
</head>
<body>
<iframe src="http://mysite/frame.html" width="100%" height="800px">
</iframe>
</body>
</html>
frame.html:
<html>
<head>
<meta charset="utf-8">
<title>IFRAME TARGET</title>
<script type="text/javascript">
var url = window.location.href;
if(url.indexOf("mysite.ru") != -1){
if (self != top) {;
document.write('<p style="margin:100px 0 300px 0; text-align:center">Это чужой сайт!<br><br> Настоявший адрес: <a href="'+ self.location.href + '" target="_top">' + self.location.href + '</a></p><hr>');
}
}
</script>
</head>
<body>
бла-бла-бла
</body>
</html>
ЗЫ. На самом деле нет никаких ни index.html ни frame.html. Я работаю с CMS, где "файлы" генерятся автоматически. Индекс - это админка, в которой в ифрейме выводится сайт.
На самом деле нет никаких ни index.html ни frame.html.
Это без разницы... Главное чтобы ты мог с этим работать.
Вот полностью рабочий пример
tmp.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<p>Text</p>
<iframe src="tmp1.html" style="height:60px"></iframe>
</body>
</html>
tmp1.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
if (window == top) {
alert( 'Этот скрипт является окном верхнего уровня в браузере' );
} else {
alert( 'Этот скрипт исполняется во фрейме!' );
var url=window.parent.location.href;
var arr=[
'/vers/tmp/',
'mysite.ru'
];
var re=new RegExp(arr.join('|'));
if (!re.test(url)) {
// Тут твоя реакция на сторонние домены
}
}
</script>
</head>
<body>
<p>Test</p>
</body>
</html>
Вот полностью рабочий пример
Ну если словами не понятно, то как-то так:
https://i.imgur.com/jAi0z03.jpg
И естественно, не работает.
то как-то так
Значит и тестовый пример твой фуфло - как-то так. :D
Как сделаешь путевый - дай знать. ;)
Значит и тестовый пример твой фуфло - как-то так.
Как сделаешь путевый - дай знать
Приходи помогать, когда научишься хотя бы смотреть в консоль.
https://i.imgur.com/aPALDQ5.jpg
И подставлять фейки с алертами ДО объявления var url=window.parent.location.href; можешь другим.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot