Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как зделать чтобы при нажатии на сылку открывалось маленькое inf окно
 
 автор: Joni   (18.06.2006 в 20:15)   письмо автору
 
 

Как зделать чтобы при нажатии на сылку открывалось маленькое inf окно. Помогите пожалуйста срочно надо

   
 
 автор: Владимир22   (18.06.2006 в 21:20)   письмо автору
 
   для: Joni   (18.06.2006 в 20:15)
 

<a href="Page.html"  onClick="open('','raz','top=320,left=325,width=350,height=220,status=no,scrollbars=yes');">Маленькое окно</a>

   
 
 автор: Ziq   (18.06.2006 в 21:31)   письмо автору
 
   для: Владимир22   (18.06.2006 в 21:20)
 

По-моему только так


<a href="javascript:void(0)"  onClick="open('page.html','raz','top=320,left=325,width=350,height=220,status=no,scrollbars=yes');">Маленькое окно</a> 

   
 
 автор: Бог Зайцев   (19.06.2006 в 07:40)   письмо автору
 
   для: Ziq   (18.06.2006 в 21:31)
 

А по-моему так )))))))))

<a href="Page.html"  onClick="open('Page.html','raz','top=320,left=325,width=350,height=220,status=no,scrollbars=yes');return false;">Маленькое окно</a>

В таком случае ссылка, хоть и без окошка, но будет работать так же и в браузерах где js отключен ))

   
 
 автор: Хулиган   (20.06.2006 в 14:47)   письмо автору
 
   для: Бог Зайцев   (19.06.2006 в 07:40)
 

А как можно открыть в маленьком окне .php?
Чтобы при этом не потерялся параметр, передаваемый в него.
Если использовать open, то параметр, который надо передать в .php, теряется.
Если использовать document.form.submit(), то параметр не теряется, но и новое окно отрывается на весь экран, а старое окно исчезает.

   
 
 автор: valenok   (20.06.2006 в 18:32)   письмо автору
 
   для: Хулиган   (20.06.2006 в 14:47)
 

А помойму всё таки: window.open('page.php?get_id=123','php',height........);

   
 
 автор: Хулиган   (21.06.2006 в 12:26)   письмо автору
 
   для: valenok   (20.06.2006 в 18:32)
 

<script language="javascript">
function show_window(){
  ...
  document.form2['senddata'].value = 'bla-bla';
  window.open('newwindow.php','abc','top=100,left=100,width=300,height=200');
  //open('newwindow.php','abc','top=100,left=100,width=300,height=200');
}
</script>

<form name=form2 action="newwindow.php" name="senddata" method="post">
  <input type="hidden" name="senddata" value="1">
  ...
</form>


window.open и open это ведь одно и то же (если я правильно понял), и содержимое senddata через них не передается.
А через submit() передать можно, но окно на весь экран, а надо маленькое.

   
 
 автор: valenok   (21.06.2006 в 14:50)   письмо автору
 
   для: Хулиган   (21.06.2006 в 12:26)
 

Тю.
Какие данные надо передать?

   
 
 автор: valenok   (21.06.2006 в 14:53)   письмо автору
 
   для: Хулиган   (21.06.2006 в 12:26)
 



<form method="GET"> 
 <input type="hidden" name="senddata" value="1"> 
  ... 
</form>

<?php

if(isset($_GET['senddata'])){ ?>

<script language="javascript"> 
function show_window(){ 
  ... 
  /*  document.form2['senddata'].value = 'bla-bla';  */ // Эту строку я не понял
  window.open('newwindow.php?senddata=<?=$_GET['senddata']?>','abc','top=100,left=100,width=300,height=200'); 


</script> 

<?php ?>


   
 
 автор: valenok   (21.06.2006 в 14:55)   письмо автору
 
   для: valenok   (21.06.2006 в 14:53)
 

newwindow.php

<?php
$sent_data
=$_GET['senddata'];

   
 
 автор: Хулиган   (21.06.2006 в 15:53)   письмо автору
 
   для: valenok   (21.06.2006 в 14:55)
 

Такой способ не проходит: js функция show_window() собирает данные из заполненых инпутов формы, склеивает их и ложит в hidden input 'senddata'. При document.form2.submit(); содержимое этого hidden input'a передаётся в newwindow.php, где извлекается через POST. Т.к.
<form name=form2 action="newwindow.php" name="senddata" method="post">

Если обрамить функцию show_window скриптом php с условием isset, то она просто не будет включена сервером в текст html-кода, т.к. input senddata пустой (он заполняется не на сервере).
Если убрать isset, то в страницу выводится обрывок строки:
'abc','top=100,left=100,width=300,height=200');
И опять же функция не работает.

   
 
 автор: valenok   (21.06.2006 в 16:40)   письмо автору
 
   для: Хулиган   (21.06.2006 в 15:53)
 

А если так:

<form name=form2 name="senddata" method="post"> 
  <input type="hidden" name="senddata" value="1"> 
  ... 
<input type=submit onClick="javascript:show_window();">
</form>

<script language="javascript"> 
function show_window(){ 
  ... 
  document.form2['senddata'].value = 'bla-bla'; 
  window.open('newwindow.php?send_data=data','abc','top=100,left=100,width=300,height=200'); 


</script> 


   
 
 автор: RMW   (21.06.2006 в 17:12)   письмо автору
 
   для: Хулиган   (20.06.2006 в 14:47)
 

Ищем в форуме по ключевым словам
form target с логикой "И"

   
 
 автор: Хулиган   (21.06.2006 в 20:16)   письмо автору
 
   для: RMW   (21.06.2006 в 17:12)
 

Смотрел в поиске, попробовал 4 разных варианта, ни один не работает.
Максимум, чего добился - это new_window.php открывается в новом окне.
А с его размерами - никак. Или размеры или передача данных, а надо и то, и другое

<script language="javascript">
//ф-ция принимает количество инпутов для проверки
function show_form(input_cnt){
  result_str="";
  for(a=1; a<input_cnt+1; a++){
    s=pad_string_left(a.toString());
    //если инпут 'count...' не пустой - запоминаем его содержимое 
    //и  содержимое связаного с ним инпута'data...'
    if (document.form1['count'+s].value !=0){
       result_str = result_str + 
                    document.form1['data'+s].value + "###" +
                    document.form1['count'+s].value + '<br>';
    }
  }
  //запихиваем в скрытый инпут результат
  document.form2['senddata'].value = result_str;
  //если данные для передачи есть - передаём
  if (result_str!=""){
     document.form2.submit();
  }
  //иначе отмена
  else {
     alert('Не заполнено ни одно поле!');
  }
}
</script>

<form name=form2 action="new_window.php" name="senddata" target="_blank" method="POST">
      <input type="hidden" name="senddata" value=""></form>

<img src="img/next.gif" class="onbutton"
     onClick="show_form(5)">


Что здесь изменить, чтобы окно было маленьким?

   
 
 автор: Хулиган   (21.06.2006 в 22:29)   письмо автору
 
   для: RMW   (21.06.2006 в 17:12)
 

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

Или эта задача в принципе нерешаема на js и php?

   
 
 автор: valenok   (21.06.2006 в 22:34)   письмо автору
 
   для: Хулиган   (21.06.2006 в 22:29)
 

автор: Бог Зайцев (10.06.2006 в 00:40) Тут

Сначала создаем окошко в JS

window.open('http://localhost/js/','window_name','') 

Затем делаем так, что б форма отправлялась в окошко



<form action = " http://www.sitename.org/curr_vonv.php" target = window_name> 
<input name = "sum"> 
<input type = "submit"> 
</form> 



Если окно не было создано до этого через js, то откроется новое окошко )
Либо, если форма не обязательна, можно сделать и так:


<input name = "v1"> 
<input type = "button" onclick = "window.open(' http://www.sitename.org/curr_vonv.php?sum='+v1.value,'','')">

   
 
 автор: Хулиган   (22.06.2006 в 00:35)   письмо автору
 
   для: valenok   (21.06.2006 в 22:34)
 

Этот пример я тоже пробовал: он вынуждает использовать GET вместо POST в новом окне
<?php
echo($_GET["senddata"]);
?>
а с GET если в строке есть последовательность символов " &" (пробел+амперсанд), то он обрывает строку по этим символам и данные теряются. Например строка "javascript & php" будет передана как "javascript"

Тихо схожу с ума...
Что, писать данные в куки и затем в новом окне читать обратно?

   
 
 автор: Бог Зайцев   (22.06.2006 в 15:36)   письмо автору
 
   для: Хулиган   (22.06.2006 в 00:35)
 

1.
Он нифига не вынуждает )
Вот укороченная версия, спер из соседнего топика.

<form target = "wow" method = "post" onsubmit = "window.open('about:blank','wow','width=100,height=80')">
<input type = submit name = "lol">
</form>

2.
Амперсанд при передаче методом get превращается в скромное %26 и уж тем более ничего не прерывает )
3.
Что б сделать %26 из амперсанда вручную нужно воспользоваться функцией
str=escape(str)

   
 
 автор: Хулиган   (23.06.2006 в 13:04)   письмо автору
 
   для: Бог Зайцев   (22.06.2006 в 15:36)
 

При всем уважении:
1. Таки вынуждает переходить к GET, т.к. если новое окно открыто через window.open, попытка сделать echo($_POST["senddata"]); приводит к ошибке Undefined index. При GET такой ошибки нет.

3.Escape не поможет, т.к. при его использовании возникает ошибка
Call to undefined function: escape()

Вот код, попробуйте сами:


<HTML>
<HEAD>
<TITLE></TITLE>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=cp1251">
</HEAD>
<BODY>
<p>

<script language="JavaScript">
function show_form(){
  res_str=document.form['text1'].value;
  res_str='newwindow.php?senddata='+res_str;
  window.open(res_str, '',"height=300,width=400");
}
</script>


<form name="form" action="newwindow.php" method="GET">
<input name="text1" value="def & ghi" ID="text1">
<input type="button" value="Send It" onClick="show_form()">

</BODY>
</HTML>


Это второй файл (newwindow.php):


<?php
echo($_GET["senddata"]);
?>


Попробуйте также вставить в newwindow.php echo(escape($_GET["senddata"])), также можно попробовать заменить GET на POST
Ни один из способов не передаёт содержимого text1.

   
 
 автор: Бог Зайцев   (23.06.2006 в 13:46)   письмо автору
 
   для: Хулиган   (23.06.2006 в 13:04)
 

При всем моему уважении,
1.
Ваш код с моим вариантом не имеет ничего общего
2.
Мои вариант отлично передает методом POST любые данные и они корректно обрабатываются на серверной стороне
3.
Функция escape() работает во всрех браузерах, покажите код, который выдает подобную ошибку.

   
 
 автор: Хулиган   (23.06.2006 в 17:09)   письмо автору
 
   для: Бог Зайцев   (23.06.2006 в 13:46)
 

Ну, пока что меня особо не за что уважать, знаний ноль :)

Ваш вариант просто выдаёт ошибку Undefined index "senddata" и больше ничего :(
Не знаю, в чём причина, но результат такой.

Об escape: я не совсем понял, при чём тут браузер? Можно подробнее?
Как я понимаю, предполагается что-то типа echo(escape($_GET["senddata"])); - т.к. нужно передать в escape получаемое через GET. Но это же php-код, и в нем нет такой функции escape(). Это js-функция. В php ей не место, соответственно и возникает ошибка...

   
 
 автор: Хулиган   (23.06.2006 в 13:35)   письмо автору
 
   для: Бог Зайцев   (22.06.2006 в 15:36)
 

В конечном итоге newwindow.php сделал так (получение через opener):


<?php
echo($_GET["senddata"]);
?>

<script language="JavaScript">
function get_text(){
  document.form['recieve1'].value=window.opener.document.getElementById("text1").value;
}
</script>

<form name="form" action="" method="GET">
<input name="recieve1" value="" ID="recieve1">
<input type="button" value="Get It" onClick="get_text()">


Из родительского окна можно ничего не передавать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования