2013-11-12 8 views
0

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

У меня есть веб-приложение Javascript/HTML5 на стороне клиента, построенное с помощью jQuery Mobile. Я нахожу, что производительность может быть довольно медленной, и было высказано предположение, что причиной слишком многого в DOM может стать причина. У моего приложения есть несколько разделов data-role="page", которые могли бы объединить DOM на одной странице html. Я пытаюсь разделить мое приложение на несколько html-страниц, чтобы повысить производительность, но я хочу, чтобы этот опыт был абсолютно понятным для пользователя. Это означает, что мне нужно будет передавать переменные Javascript между физическими страницами html в моем приложении.

До сих пор я видел следующие варианты в моем поиске:

  1. Используйте строку запроса в URL идет к другим страницам. - Я не уверен, что хочу, чтобы мои пользователи увидели, что может быть довольно большой и запутанной строкой запроса в адресной строке.
  2. Используйте код сервера, например ASP.Net или PHP, для обработки данных обратной передачи. - Я открыт для этого, но я не уверен, как это будет работать. Я не хочу конвертировать мои html-страницы в aspx или php-файлы. Могу ли я иметь простой скрипт на стороне сервера, который мог бы вставлять данные обратной передачи в обычный html-файл?
  3. Использование Cookies для хранения соответствующих данных. - Я не уверен в этом, потому что большинство моих пользователей находятся в корпоративных средах, которые могут ограничить использование файлов cookie.

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

+0

проблема производительности JQuery Mobile, в основном из-за огромных стилей, связанных с ним. Сбросьте таблицу стилей точно, что вам нужно, и удалите все остальное. Сжатие изображений. Использование нескольких html-файлов не является хорошим выбором, так как это, безусловно, будет мешать работе с пользовательским опытом. В следующий раз вместо jquerymobile перейдите с угловым. js/backbone.js с бутстрапом для templating .. – phpdev

+0

Я до сих пор использую доджо, и я должен сказать, что jQuery Mobile уже кажется намного менее громоздким. – Brian

+0

:) .. Вы поймете, что катались на школьном автобусе до сих пор, когда u начинаете использовать js-рамки. Его гораздо быстрее и jquerymobile нигде не приближается ... – phpdev

ответ

1

Попробуйте локальное хранилище или хранения Session http://www.w3schools.com/html/html5_webstorage.asp

+0

Может ли локальное хранилище быть ограничено, так как файлы cookie могут быть ограничены в корпоративной среде? – Brian

+0

Actualy, я никогда не слышал о таких ретрансляциях, поэтому у меня нет «логического» ответа. Но я знаю, что многие современные сайты/приложения используют их – paka

+0

Не рекомендуется использовать w3schools.com в качестве ссылки. Он полон ошибок, см. Http://w3fools.com. –

0

Вы можете использовать POST вместо GET, если вы только озабоченность в связи с ГЭТ является пользователь видит длинные querystrings.

+0

Моя другая страница не сможет получить доступ к данным POST с помощью Javascript. Мне нужен какой-то скрипт на стороне сервера, чтобы обработать это, а затем как я получу данные на странице html или Javascript? – Brian

+0

Точка взята. Я сторонний разработчик и забыл, что вам нужна только клиентская сторона, если вы можете помочь. – JasonlPrice

+0

Но вы также можете использовать код на стороне сервера, чтобы написать свой javascript или записать значения для javascript. Я бы пошел с последним, так как для этого потребовалось бы меньше кода на стороне сервера, записывающего блоки javascript. – JasonlPrice

0

Используйте localStorage. localStorage позволяет хранить значения в браузере.

1

Локальное хранилище будет способом, если вы совместимы с HTML5. Он будет хранить значения, уменьшать количество звонков на любой сервер, пока вы не будете готовы обновить всю информацию, и информация будет присутствовать даже при закрытии браузера; использовать сессионное хранилище или подобное JS

window.onbeforeunload = function() { 
    localStorage.removeItem(key); 
    return ''; 
}; 

Если вам нужно очистить локальное хранилище конфиденциальной информации при закрытии браузера.

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

Вы также можете ограничить хранение 5 мегабайт данных (я считаю, что это стандартный), но у вас, вероятно, есть другие проблемы, если ваша форма требует такой информации.:)

Проверить их для получения дополнительной информации

http://msdn.microsoft.com/en-us/library/bg142799(v=vs.85).aspx

http://dev.w3.org/html5/webstorage/

Смежные вопросы