Я хочу добавить свойства к объекту и передать этот объект на другую страницу.Как я могу использовать один объект javascript на многих страницах?
ответ
несколько вещей:
- Я бы объединил функции в пространстве имен;
- вам не нужна кодировка Base64, так как
encodeURIComponent()
хватит; - Это не подходит для больших объектов, вам необходимо
localStorage
; - В вашем коде было несколько исправлений, например, когда href уже содержит
?
;
Я переработал его так:
DataTransferService = {
sendToUrl: function(obj, url, name) {
var value = JSON.stringify(obj);
name = name || 'data';
return url + (url.indexOf('?') === -1 ? '?' : '&') + name + '=' + encodeURIComponent(value);
},
receiveFromCurrentUrl: function(name) {
return receiveFromUrl(window.location.href, name);
},
receiveFromUrl: function(url, name) {
var value;
name = name || 'data';
url = url || window.location.href;
if ((value = this.getUrlParameter(name, url)) !== null) {
return JSON.parse(value);
}
},
getUrlParameter:function(name, url) {
var p, qs;
if ((p = url.indexOf('?')) === -1) {
return null;
}
qs = url.substr(p + 1).split('&');
for (var i = 0, len = qs.length; i != len; ++i) {
var pair = qs[i].split('=');
if (pair[0] === name) {
return decodeURIComponent(pair[1]);
}
}
return null;
}
};
Применение:
var obj = {
a: 123,
b: 456,
c: [1, 3, 5]
};
var url = DataTransferService.sendToUrl(obj, '/path/to/page');
// "/path/to/page?data=..."
location = url;
На приемной странице:
var obj = DataTransferService.receiveFromCurrentUrl();
// work with obj here
функции положить в глобальной JS файл ..
function GotoPage(relUrl) {
var json = JSON.stringify({param1:val1, param2:val2});
window.location.href = relUrl.concat('?data=').concat(Base64.encode(json));
}
function GetUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
Предположим, мы навигации от page1 к PAGE2 .. в .js PAGE2 в файл, который вы будете писать:
var base64data = GetUrlVars()['data']
var jsondata = Base64.decode(base64data)
var data = JSON.parse(data);
var param1 = data.param1;
//do something with the objects properties
Для СПР Base64
реализации: How can you encode a string to Base64 in JavaScript?
Если вы хотите сохранить свой url clean, вы можете использовать cookie. – mika
Помните, что это не удастся, если вы хотите поместить функции в свои объекты, поскольку вы сериализуете объект, поскольку JSON и JSON поддерживают только данные. – KaeruCT
приятное усилие, но не идеальное. как насчет ограничения по URL? так что, упустив большие объекты? Я бы пошел на локальное хранилище – allenhwkim
- 1. Как я могу использовать js-файлы на главных страницах?
- 2. Как использовать один экземпляр Prototype-Instance на нескольких страницах HTML?
- 3. Печатать письмо на многих страницах
- 4. MathJax - как я могу использовать его на страницах Github?
- 5. Как использовать один JavaBean на многих страницах accross в JSP фрэймы
- 6. Asp.Net- Создайте один объект и используйте его на многих страницах aspx.cs.
- 7. Как я могу использовать один файловый объект в другом классе
- 8. как я могу использовать 1 contextmenustrip на многих кнопках
- 9. Как я могу использовать скрипты Python в веб-страницах?
- 10. Как я могу получить объект на @WindowScoped?
- 11. Разделите апплет на многих страницах jsp
- 12. Один объект для многих объектов symfony
- 13. Как я могу выбрать только один объект?
- 14. Как я могу использовать объект/карту Javascript в качестве очереди
- 15. Как я могу повторно использовать объект View?
- 16. Могу ли я использовать тему wordpress на новых php-страницах?
- 17. Могу ли я использовать комментарий Django на других страницах?
- 18. Какие файлы я могу использовать на страницах GitHub?
- 19. HTML-виджет на многих страницах - Orchard CMS
- 20. Почему я могу печатать только один объект в javascript?
- 21. Как я могу объединить объект javascript?
- 22. Jinja2 Flask Кнопка Python на многих страницах
- 23. Как использовать плагины на страницах
- 24. Как я могу использовать gldrawelements для многих квадратов?
- 25. Использовать Javascript для элементов на разных страницах?
- 26. Как я могу использовать Urdu в веб-страницах?
- 27. Как я могу включить один переключатель в ListView многих переключателей?
- 28. Как использовать один вид на двух разных страницах в Django?
- 29. Как использовать один и тот же sidenav на нескольких страницах
- 30. Отслеживание информации на многих страницах для сайта
Возможно, вы смотрите на [ ' localStorage'] (https://developer.mozilla.org/en-US/docs/DOM/Storage)? –
он ответил на свой вопрос @Jack hahah: P Он отправил для других –