Как заставить этот код найти кадр из предыдущего каталога? - PullRequest
1 голос
/ 29 февраля 2012

Я нашел в сети java-скрипт, который перенаправляет страницу, если она открыта за пределами рамки индексной страницы. Это работает, когда все страницы находятся в основном справочнике, но когда страница на один каталог выше, тогда она не работает.

Когда я использую страницу местоположения как: index.html, тогда страница открыта в новой вкладке, она не перенаправляет.

Если я использую ../index.html, то каждый раз, когда я пытаюсь щелкнуть ссылку на страницу, она обновляет мою индексную страницу.

Есть идеи?

<!DOCTYPE html>
<html>
    <head>
        <script language="javascript">
            var framespage="index.html"
            if (top.location==document.location)
            {
                top.location=framespage;
            }
            else
            {
                var parent_location=parent.location.href;
                var str_beginning=parent_location.length-framespage.length;
                if (parent_location.substring(str_beginning, parent_location.length)!=framespage)
                {
                    parent.location=framespage;
                }
            }
        </script>
        <link href="../styles.css" rel="stylesheet" type="text/css" />
    </head>
</html>

EDIT

Я нашел кусок кода, который делает эту работу.

Другой мой вопрос, как отложить загрузку страницы? Я хочу сообщить пользователю, что пользователь не может загружать страницы за пределами фрейма.

Как отложить перенаправление страницы?

<script language="javascript">
    if (top.location == self.location) 
    {
        top.location = '../index.html'
    }
</script>

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Я провел поиск и нашел код, который выполняет эту работу:

    <script language="javascript">
        if (top.location == self.location) 
        {
            top.location = '../index.html'
        }
    </script>
1 голос
/ 29 февраля 2012

Таким образом, по сути, сценарий установит parent.location = framespage, если они не совпадают, но проблема в том, что ваш файл index.html находится в отдельном каталоге.

У вас есть несколько вариантов:

  1. Установите index.html на его абсолютный путь (например, http://www.mywebsite.com/index.html)
  2. Определите, где вы находитесь в структуре каталогов, и измените переменную framespage.

    var path = document.location.pathname;
    if (path.indexOf('/') !== -1) {
      framespage = '/index.html';
    } else { framespage = 'index.html'; }
    

Чем больше я об этом думаю, почему бы просто не добавить косую черту, чтобы она всегда шла к корню. Можете ли вы уточнить?

...