Извлечение URL из jQuery .load () - PullRequest
0 голосов
/ 16 июня 2011

Я хотел бы получить URL (полный путь) page2.html в следующем параметре:

page1.html
----------
<script type="text/javascript" src="js/jquery_1.6/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $("#content").load("page2.html");
    }
</script>
<div id='content'>
    <!-- this is where page2.html will be placed -->
</div>
----------

page2.html
----------
<script>alert(location.pathname)</script> //this should return the full path of page2.html, but now it returns page1.html
This is a line of content that will be loaded in page1.html
----------

Моя проблема заключается в том, что всякий раз, когда я использую средства извлечения URL, такие как document.URL, window.location или location.pathname, он возвращает полный путь к файлу page1.html. Вероятно, это связано с тем, что page2.html загружается в page1.html, хотя я запрашиваю URL-адрес в page2.html.

У кого-нибудь есть решение для этого или это неизбежно при использовании функции .load ()?

Ответы [ 7 ]

1 голос
/ 16 июня 2011

Я думаю, что вы не можете сделать это с помощью Javascript. Используя load, вы не визуализируете страницу, а извлекаете содержимое.

Использование .load фактически позволяет получить данные из URL-адреса элемента. Он использует AJAX-вызов для извлечения данных и выгрузки их на элемент "#content", после чего выполняется ваш код.

На данный момент URL-адрес читает page1.html, а не page2.html.

1 голос
/ 16 июня 2011

Поскольку вы хотите выполнить некоторый JavaScript для определения пути после загрузки страницы, почему бы просто не использовать обратный вызов для отображения значения пути, который у вас уже есть:

$(document).ready(function(){
    var path = "page2.html"
    $("#content").load(path, function() {
       alert(path);
    });
})
0 голосов
/ 16 июня 2011

Функциональность, которую вы хотите получить, может быть достигнута с помощью iframe вместо div.

0 голосов
/ 16 июня 2011

Это происходит потому, что данные, загруженные динамически, вставляются в текущую страницу. Если вам действительно нужен правильный URL-адрес каждый раз, используйте iframe:

<iframe src="page2.html" style="width:100%;height:300px" id="page2_frame">Error</iframe>

Однако, если вы используете этот метод, данные в iframe будут иметь высоту только 300 пикселей, и полоса прокрутки будет отображаться, если содержимое длиннее. Чтобы получить доступ к содержимому iframe, используйте $("#page2_frame")[0].contentWindow, который вернет объект окна для iframe.

Ad @ м

0 голосов
/ 16 июня 2011

ваш <script>alert(location.pathname)</script> не даст вам page2.html, потому что вы просто загружаете содержимое page2.html, а не страницу.Я имею в виду, если вы загрузите pag2.html в iframe, вы получите page2.html.Прямо сейчас содержимое находится на page1.html, поэтому оно предупредит вас page1.html

0 голосов
/ 16 июня 2011

Javascript выполняется после того, как произошла загрузка, поэтому предупреждение страницы1 - правильное поведение.Единственный способ увидеть это - сохранить местоположение вручную в javascript var на странице 2.

0 голосов
/ 16 июня 2011

Вам может понадобиться заполнить URL-адрес в скрытом div или что-то на page2.html, возможно, с помощью какой-либо серверной технологии, или вам нужно будет самостоятельно создать полный путь для page2.html, поскольку вы уже знаете путьк page1.html и page2.html относительно него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...