Framebuster с исключениями
У меня есть вопрос о написании фрейм-бастер. Я уже читал Frame Buster Buster ... нужен код ошибки, но мне нужна дополнительная настройка.
Мое содержимое из моего блога по адресу [ http://my_domain.c0m/blog] отображается на другом сайте с тремя "просмотрами". Один вид - это подача, которая меня не беспокоит. Два других беспокоят меня, и я хочу сломать оба. Я также хочу разрешить исключения доменов с разрешением на фрейм.
В одном представлении кажется, что содержимое из верхней части моего HTML-файла в верхней части моего блога сначала копируется для создания "снимка" [ http://the_other_domain.c0m/copy_of_blog] затем эта копия помещается в рамку в [ http://the_other_domain.c0m/ ]. Таким образом, в этом случае " дочерняя " копия размещается по адресу [ http://the_other_domain.c0m/]. Google переводчик делает то же самое, но я нахожу это нормально. Итак, я хотел бы сломать этот фрейм, а также разрешить исключения для Google, а также для людей, которые сделали копию на свои ПК и хотели бы просмотреть в утилиту, которая может фрейм.
С другой стороны, кажется, что контент с моего сайта в рамке. Таким образом, в этом случае [ http://my_domain.c0m/blog_post] подставляется в [ http://the_other_domain.c0m/]. Я хотел бы вырваться из этого кадра. Тем не менее, моя проблема в том, что я не могу понять, как это сделать, сохраняя исключения для фреймов google translate или отдельных пользователей ПК дома.
Мое решение до сих пор (я не особенно знаком с javascript. Поэтому, пожалуйста, не смейтесь слишком усердно над избыточностью и отсутствием знаний):
Я был в состоянии разрушить первый кадр, используя:
<SCRIPT type="text/javascript" >
var topWindow = String(top.location)
var topWord=topWindow.split("/")
var selfWindow = String(self.location)
var selfWord=topWindow.split("/")
var correctLocation ="http://my_domain.c0m/blog"
var correctWord2="my_domain.c0m"
var http="http:"
if( ( (topWord[2] != correctWord2) || (selfWord[2] != correctWord2) )
&& (topWord[2] != 'translate.googleusercontent.com' ) && (topWord[0] == http ) ){
document.write("message expressing my opinion about the asshattery going in here.]" )
setTimeout("redirect_after_pause()",8000)
}else{
//document.write("<p><font color='purple'>Hi there! Javascript is working.</font> </p> " )
}
function redirect_after_pause() {
var correctLocation ="http://my_domain.c0m/blog"
top.location=correctLocation
}
Я знаю, что это неэффективно. Но это работает и достигает моей цели - сделать исключение для а) переводов на googlecontent, которые просили мои читатели во Франции, и б) случаев, когда пользователь создает фреймворк в утилите, которая загружается на его компьютер (который, я думаю, начинается с "FILE").:".
Теперь трудность: это не работает для представления, где контент, размещенный в моем домене, создан в другом домене. Я считаю, что отследил проблему до var topWindow = String(top.location), который не был разрешен в моем дочернем окне. В принципе, это будет работать:
<script type="text/javascript">
if(top != self) top.location.replace(location);
Тем не менее, я думаю, что это испортило использование google translate, который использует верхнюю рамку, в которой хранится их перевод моего контента, также размещенного на [ http://translate.google.com%5D. Я подозреваю, что аналогичным образом облажаются считыватели, которые могут отображать локальную копию на чьем-то компьютере, если эта копия отображается во фрейме.
Если кто-то может направить меня к решению, которое я могу реализовать, чтобы разбить оба кадра, допуская мое исключение
Кстати: похоже, что рассматриваемый сайт использует фреймбастер. Я осмотрелся и нашел это в их /static/common.js?1345250291 коде:
enable_iframe_buster_buster:function(){var a=this,b=0;window.onbeforeunload=function(){b++};clearInterval(this.locks.iframe_buster_buster);this.locks.iframe_buster_buster=setInterval(function(){0<b&&(b-=2,a.flags.iframe_story_locations_fetched&&!a.flags.iframe_view_not_busting&&_.contains(["page","story"],a.story_view)&&NEWSBLUR.reader.active_feed&&($(".NB-feed-frame").attr("src",""),window.top.location="/reader/buster",$(".task_view_feed").click()))},1)},disable_iframe_buster_buster:function(){clearInterval(this.locks.iframe_buster_buster)}
Это глубоко внутри какого-то особенно плотного JavaScript. Независимо от того, что он делает, это не влияет на мою способность разрушать фрейм для случая, когда мой контент копируется и размещается на [ http://the_other_domain.c0m/]. Я еще не полностью изучил, может ли он вызывать простые фреймбастеры, потому что ранее я только недавно узнал, что var topWindow = String(top.location) был запрещен в дочернем фрейме с доменом, отличным от родительского фрейма.
Присутствует ли фрейм-бастер, я хотел бы помочь с решениями здесь. Я знаю, что если один сайт теперь создает мой контент таким способом, то только когда эта противная техника будет задействована, это всего лишь вопрос времени, и я хотел бы написать код в решениях, которые грациозно разрушают оба метода, предоставляя себе исключения. Заранее спасибо.