передача разных переменных на одну и ту же страницу - PullRequest
2 голосов
/ 17 сентября 2011

Я пытаюсь создать веб-приложение, используя в основном html и javascript.Я использую несколько различных переменных в приложении, которые передаются через URL.

вот проблемы, у меня есть несколько ссылок, которые ссылаются на страницу, на которой в данный момент находится приложение, только с измененными переменными, но, хотя нажатие на ссылки меняет значение URL, страница не меняется / перезагружаетсядля новых значений при использовании и href, есть ли чистый способ заставить страницу перезагрузиться, если вы ссылаетесь на текущую страницу или меняете URL?

В настоящее время я использую jQuery для установки окна.местоположение с новыми переменными, а затем перезагрузить страницу.

также у меня есть аналогичная проблема для использования кнопки назад в браузере.Он изменит URL, но не обновит страницу, поэтому, если у вас установлена ​​переменная, равная 1, вы измените ее на 2, которая будет работать, и страница перезагрузится с переменной, установленной o 2, но если вы вернетесь назад, используя историю браузераurl скажет, что ваша переменная должна быть 1, но остальная часть страницы будет работать так же, как переменная 2, пока вы не обновите страницу.

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

согласно запросу, это часть кода, с которой у меня возникают проблемы:

сначала код для создания загружаемых html-элементов

var sel_tags=document.getElementsByName("selected_tags")[0];
var temp="";
if(Tags==null)
{
    temp="\<p>All Notes\<\/p>";
}
else//Tags not empty, and there are tag filters
{
    var click= new Array("",a+ AtTagShow);
    var GoTo="PageViewNotes.html?"
    for (var i=0; i < Tags.length; i++) {
        //if we are showing @tags, or a tag is not an @tag
        if(AtTagShow||Tags[i][0]!="@")
        {
            click[0]=t+Tags[i];
            if (temp.length>0)
        {temp+="\<span class=\"spacer\">\/<\/span>"};
    temp+="\<a class=\"selected_tags_label\""+ 
            "href=\""+GoTo+click.join("&")+"\">\<span>"
    +Tags[i]+"\<\/span>\<\/a>"
    }
    };
};
sel_tags.innerHTML=temp;

вот код jquery для настройки onclick:

$(".selected_tags_label").live("click",function(){ window.location=(this.href); window.location.reload(); });

Пример URL-адреса для этой проблемы: page.html? Tags = # rediculous, # meeting & AtTagShow = true, нажав на повторяющийся элемент, URL которого будет изменен на: page.html? Tags = # redicu& AtTagShow Lous = истина

Ответы [ 5 ]

1 голос
/ 13 сентября 2012
window.location.href="page.html?Tags=#rediculous&AtTagShow=true"
0 голосов
/ 17 сентября 2011

Браузер перезагружает страницу, когда любая из этих частей URL обновляется с помощью window.location:

  1. Домен
  2. Порт
  3. Путь
  4. Строка запроса

Но текущий документ не будет загружен, если вы измените часть fragment_id (которая является просто ссылкой на элемент HTML внутри текущего документа).

Таким образом, исходя из того, что вы говорите, я полагаю, вы обновляете fragment id.

Также это может помочь узнать, что метод window.location.reload() выполняет работу клавиши F5.

0 голосов
/ 17 сентября 2011

В современных браузерах (IE8 +, Opera 10.6+, Fx 3.6+, Safari 5+) у вас есть событие hashchange .

Вместо перезагрузки страницы, возможно, вы сможете достичь желаемых результатов с помощьючто-то вроде этого:

<script>
document.onhashchange = function(){
    // do something
}
</script>

MDN также может быть полезным.

0 голосов
/ 17 сентября 2011

Если вы используете параметры запроса (вещи после знака «?» В URL), то изменение параметра запроса и установка window.location для этого нового URL должно вызвать загрузку новой страницы с сервера.

Если вы используете хеш-значения (вещи после # mark в URL), то изменение хеш-значения не приведет к загрузке новой страницы.

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

Если вы намеренно пытаетесь сделать все это с использованием значений хеш-функции, чтобы избежать фактической перезагрузки страницы сервера, вам придется выполнять больше кодирования, чтобы перехватывать изменения хеш-функции и обрабатывать их. Это проще сделать в современных браузерах, чем в старых браузерах, использующих событие window.onhashchange. См. эту страницу на MDN для получения дополнительной информации.

0 голосов
/ 17 сентября 2011

Посмотрите на плагин jQuery History для настройки вашего сайта, чтобы иметь историю перемотки назад / вперед.Это помогает с настройкой состояний на вашей странице, которые вызывают данные, основанные на том, какие параметры запроса находятся в строке URL.

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