JS запрещение просмотра во фрейме.

Тема в разделе "Другие языки", создана пользователем Leon1010, 31 окт 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Leon1010

    Leon1010 Создатель

    Регистр.:
    15 апр 2007
    Сообщения:
    46
    Симпатии:
    5
    Доброго времени суток.
    У меня такой вопрос:
    Можно ли средствами JS запретить просмотр какого либо html кода, если юзер открывает сайт во фрейме.

    Мне это нужно для защиты счетчика от накрутки всякими буксами, САР и тому подобными системами.
     
  2. zerdek

    zerdek

    Регистр.:
    29 ноя 2007
    Сообщения:
    346
    Симпатии:
    50
    для вас более логично не запрещать просмотр, а всплывать из-под чужих фреймов, т.е. убивать все чужие фреймы и оставаться одному. тогда вас и накручивать не будут, т.к. они при этом потеряют свой траф :)

    у себя в хеадере я использую такой код:
    <script type="text/javascript">
    if(self != top){ top.location=self.location;
    self.moveTo(0,0);
    self.resizeTo(screen.availWidth,screen.availHeight);
    self.focus();}
    </script>
     
  3. Leon1010

    Leon1010 Создатель

    Регистр.:
    15 апр 2007
    Сообщения:
    46
    Симпатии:
    5
    Убивать все чужие фреймы - это как?
    Этот код нужно вставлять перед кодом счетчика?
     
  4. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Вышеприведенный код обращается к основному окну сайта и подменяет урл на свой. В итоге страница перегружается на твой урл, чем убивает все чужое, а сам ифрейм распахивается на весь экран.

    В итоге будет 2 вызова счетчика.
    Таким образом надо вставлять код не до и не после счетчика, а условием
    К тому же непонятно, зачем делать ресайз, если основное окно перегрузится на наше.
    Поэтому проще так - если окно родителя не наше, то делаем его нашим. При этом счетчик лишний раз не дергаем.
    Код:
    <script type="text/javascript">
    if(self != top){
    top.location=self.location;
    }else{
     //и тут код счетчика
    }
    </script>
    
     
Статус темы:
Закрыта.