Предупрежение во фрейме с исключеним своего сайта
Пытаюсь сделать примитивную защиту от показа своего сайта во фремах.
Вывести предупреждение получилось, но необходимо, чтобы его не было на моём сайте. Погуглив, я собрал код ниже, но он выводит предупреждение и на своём. Помогите пож изменить, чтобы предупреждения его не было при открытии во фреймах(ифрейме) на своём сайте 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, время: 23:21. |