Передача данных по страницам

 
0
 
JavaScript
ava
Alx | 07.12.2003, 10:40
Вот интересно, какие есть варианты?
Я например представляю себе только один: модальные (ну или неможальные) окна...

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

У кого ещё есть варианты?))
Ответы (18)
ava
Secandr | 07.12.2003, 11:11 #
Можно открывать новое окно и document.write

Меня мучает давно вопрос: можно при помощи js получить get-переменные?
ava
Alx | 07.12.2003, 11:22 #
нет, я имею ввиду из одного нормальных окна передать инфу в другое не менее нормальное))
ava
[xoodo] | 07.12.2003, 18:47 #
Если передать нужно одну переменную, то можно при открытии нового окна присвоить ему имя, идентичное значению переменной, и потом через window.name (кажется) это значени получить. Но это называется словом ИЗВРАЩЕНИЕ. Других вариантов с Яваскриптом я не придумаю что-то... А, cookies родимые еще! Но не у всех они включены.
ava
[email protected] | 08.12.2003, 09:54 #
window.location.search - содержит в формате String все переменные, которые передаются с формы при submit. Можно извратиться и написать функцию, которая будет искать в этой строке нужные значения. Это как вариант...
ava
[xoodo] | 08.12.2003, 19:51 #
А можно с этого момента по-подробнее? У меня window.location.search передал пустую строку, хотя заведомо было что передавать из формы. Есть ли тут еще нюансы, о которых я не подозреваю?
ava
nikolin | 02.02.2004, 22:01 #
_http://www.test.ru/look.html?0
_http://www.test.ru/look.html#0

look.html

<html>
<head>
<script language='JavaScript'>
var a = window.location.search; / look.html?
var b = window.location.hash;    / look.html#

if ( a == 0 ) { alert(' Доброе Утро') }
else { alert('Я уже на работу :-( ') }

if ( b == 0 ) { alert(' Здравстуй' ) }
else { alert(' Досвидания' ) }

</script>
</head>
</html>
ava
Royan | 08.02.2004, 13:51 #
Еслм открывать новое окно, то специально для этого Microsoft ввела специальное свойство - dialogArguments. Для краткости привоже прямо сюда отрывки из статьи с msdn'а:

Retrieves the variable or array of variables passed into the modal dialog window.

Syntax

[ vVariables = ] window.dialogArguments
Possible Values

vVariables String, numeric, object, or array value that specifies arguments.

The property is read-only. The property has no default value.

Remarks

The dialogArguments property applies only to windows created using the showModalDialog and showModelessDialog methods.
ava
guest | 09.02.2004, 15:30 #
dialog arguments только для модальных окошечек (sux)
а чем фреймы не устраивают вершний фрэйм для хранения инфы
ava
Royan | 09.02.2004, 22:02 #
На самом деле хранить информацию надо на сервере и пользоваться server-side языками, а все эти причуды с передачей параметров сквозь JavaSctipt большей частью надуманы и я бы даже сказал это не есть признак отменного програмирования
ava
Sardar | 09.02.2004, 23:15 #
Royan полностю с тобой согласен, но все же иногда появляются потребности делать что то нестандартное, например узнать не открыто ли окошко с определенной страницей рядом. Это изврат, но иногда хочется ;-) ...
ava
guest | 10.02.2004, 10:41 #
нет надуманных проблем
есть поставленные задачи и способы их выполнения smile
а по каждому поводу сервак нагружать он ведь не магазин делает
ava
guest | 25.02.2004, 16:06 #
<script language="JavaScript">
var C=[["%40","@"],["%3A",":"],["%2F","/"],["+"," "],["%2B","+"],["%23","#"],["%28","("],["%29",")"],["%22","\""],["%27","'"],["%3B",";"],["%2C",","],["%5C","\"],["%26","&"],["%24","$"],["%3E",">"],["%3C","<"],["%5E","^"],["%21","!"],["%3F","?"]];
var get=document.URL.substring(document.URL.indexOf("?")+1,document.URL.length);var gets=[];var tmpN="";var Flag=0;var k=0;var GL=get.length;
function Replace(v){for(i=0; i<C.length; i++){pos=1;while(pos>=0){pos=v.indexOf(C[i][0]);if(pos>=0){v=v.substring(0,pos)+C[i][1]+v.substring(pos+C[i][0].length,v.length);}}}return v;}
for(i=0; i<GL; i++){if(get.substring(0,1)=="="){Flag=1;gets[tmpN]="";}else{if(get.substring(0,1)!="&"){if(Flag==0){tmpN+=get.substring(0,1);}else{gets[tmpN]+=get.substring(0,1);}}else{gets[tmpN]=Replace(gets[tmpN]);tmpN="";Flag=0;k++;}}get=get.substring(1,get.length);}gets[tmpN]=Replace(gets[tmpN]);

document.write(gets["get_var_name"]);
</script>

ava
GoodBoy | 25.02.2004, 18:08 #
Вай-вай-вай!!!! А если вот так:
<script language="JavaScript">
var Rep=[["%40","@"],["%3A",":"],["%2F","/"],["\+"," "],["%2B","+"],["%23","#"],
["%28","("],["%29",")"],["%22","\""],["%27","'"],["%3B",";"],["%2C",","],
["%5C","\"],["%26","&"],["%24","$"],["%3E",">"],["%3C","<"],["%5E","^"],
["%21","!"],["%3F","?"],["%20"," "]];
var get=location.search.substring(1, location.search.length);
var gets = [];

if (get.length>0) {
get = unescape(get);
for (var i=0; i<Rep.length; i++) {
var re = new RegExp(Rep[i][0]);
while (get.match(re)) get = get.replace(re, Rep[i][1]);
}
if (get.indexOf("=")>-1) {
var pairs = get.split("&");
for (var i=0; i<pairs.length; i++) {
var param = pairs[i].split("=");
gets[param[0]] = param[1];
}
for (i in gets) document.write(i+" = "+gets[i]+"<br>\n");
} else {
document.write("get request = "+get);
}
}
</script>

После чего в массиве gets получаем все то, что нам пришло в запросе. smile
ava
GoodBoy | 25.02.2004, 18:11 #
Извиняюсь... Опять кусок съелся... Должно быть вот так:
var Rep=[["%40","@"],["%3A",":"],["%2F","/"],["\\+"," "],["%2B","+"],["%23","#"],
["%28","("],["%29",")"],["%22","\""],["%27","'"],["%3B",";"],["%2C",","],
["%5C","\\"],["%26","&"],["%24","$"],["%3E",">"],["%3C","<"],["%5E","^"],
["%21","!"],["%3F","?"],["%20"," "]];

Разница в двойном слэше перед символом + и перед самим символом "\" нужно поставить еще один!
ava
Sardar | 25.02.2004, 21:12 #
Все решили порпробовать себя в разборке аргументов smile. Вот мой вариант:

<script language="Javascript" type="text/javascript">
<!--
function GetVars(sep) { //конструктор контейнера с аргументами
this.length=varsGetLength; //взять длинну
sep=(sep!=null)? sep: '&';
var srch=window.location.search; //ИЕ даст нам уже раскодированную строку, Опера не изменную
srch=decodeURLString(srch);
if(srch.length<1) return;
var i=0,b=1,d=0;
while(i<srch.length) {
i=srch.indexOf(sep,i+1);
i=(i<0)? srch.length: i;
var val=srch.substring(b,i);
var sepr=val.indexOf('='); //за split в JS надо... :(
if(sepr>0) this[val.substring(0,sepr)]=val.substr(sepr+1);
else this[val]=true;
b=i+1;
d++;
}
}
function varsGetLength() { //результат надо кешировать
if(typeof(this.document)!='undefined') return 0;
var ct=0;
for(i in this) if(typeof(this[i])!='function') ct++;
return ct;
}
//а подобной функции в JS нет :(, decodeURI это не совсем то что нужно
//можно еще юзать escape() вместо самоделок...
function decodeURLString(str) {
for(var i=str.indexOf('%'); i>=0; i=str.indexOf('%',i+1)) {
var num=parseInt(str.substr(i+1,2),16);
if(!isNaN(num)) {
var part1=(i>0)? str.substring(0,i): "";
var part2=(i<str.length-3)? str.substr(i+3): "";
str=(part1+String.fromCharCode(num)+part2);
}
}
return str;
}
//Test
getVars=new GetVars();
alert(getVars.length());
for(i in getVars) {
if(typeof(getVars[i])!='function') alert("getVars."+i+"="+getVars[i]+"\n");
}
//-->
</script>

Проверенно в IE, Opera(7.23), Mozilla(1.6).
ava
Alx | 28.02.2004, 13:31 #
Royan

так для ентого ещё нужно выучиться серверным языкам, найти хостинг подходящий...) но по-моему я предложил неплохой вариант предачи через буфер обмена!
ava
Royan | 01.03.2004, 21:41 #
Дело твое, но не забывай, что это

а) Не секъюрно (читай не надежно)
б) Не стабильно - JS очень часто глючит в IE
и еще кое-чего о чем писать лень
в) Все выше перечисленное лично мое мнение ;)
ava
Alx | 01.03.2004, 21:57 #
Royan
так я ж не отрицаю! но за неимением лучшего...

воть скоро я выучу PHP - будет другое дело! smile
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить