Предупрежение во фрейме с исключеним своего сайта
Пытаюсь сделать примитивную защиту от показа своего сайта во фремах.
Вывести предупреждение получилось, но необходимо, чтобы его не было на моём сайте. Погуглив, я собрал код ниже, но он выводит предупреждение и на своём. Помогите пож изменить, чтобы предупреждения его не было при открытии во фреймах(ифрейме) на своём сайте
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>');
}
}
|
Цитата:
Цитата:
|
Забыл сказать
Замена 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.parent.location.href Это адрес родителя. С ним и работай. Если он конечно будет определен... :) |
Цитата:
|
Цитата:
var url = window.parent.location.href; приводит к Error: Permission denied to access property "href" |
Цитата:
https://javascript.ru/forum/events/7...tml#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, где "файлы" генерятся автоматически. Индекс - это админка, в которой в ифрейме выводится сайт. |
Цитата:
Вот полностью рабочий пример 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>
|
Цитата:
![]() И естественно, не работает. |
Цитата:
Как сделаешь путевый - дай знать. ;) |
Цитата:
![]() И подставлять фейки с алертами ДО объявления var url=window.parent.location.href; можешь другим. |
| Часовой пояс GMT +3, время: 06:47. |