Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Создание свойств окна (https://javascript.ru/forum/css-html-browser/3496-sozdanie-svojjstv-okna.html)

Dicot 27.04.2009 09:40

Создание свойств окна
 
Здравствуйте.
Есть такая ф-я:
function openPlayer(movie, title){
    player = window.open('player.html', 'player', 'height=385,width=480,dependent,resizable');
    player.movie = movie;
    player.title = title;
  };

Собственно непонятки с двумя последними строчками. В IE и FireFox'e в новом окне эти свойства доступны. А в Опере window.title == undefined.
Подскажите, пожалуйста, в чем дело и как с этим бороться.

Gvozd 27.04.2009 10:59

путем серии опытов и гугла вот:
function openPlayer(movie, title){
    player = window.open('player.html', 'player', 'height=385,width=480,dependent,resizable');
	player.onload=function(){this.document.title=title;}//огнелис
	player.document.title=title;//опера и осел
  };

Dicot 27.04.2009 12:43

Странно, но у меня это нигде не работает.
Собственно интересует должны ли свойства title и movie быть доступны в новом окне?

Dicot 27.04.2009 13:35

Кажется все дело в порядке.
Скрипт в дочернем окне обращается к свойствам раньше, чем скрипт в родительском окне успевает их создать.

Gvozd 27.04.2009 14:40

Цитата:

Сообщение от Dicot
Собственно интересует должны ли свойства title и movie быть доступны в новом окне?

разумеется должны
Цитата:

Сообщение от Dicot
Скрипт в дочернем окне обращается к свойствам раньше, чем скрипт в родительском окне успевает их создать.

повесьте в дочернем окне сркикпты на onload

Dicot 27.04.2009 19:42

Цитата:

повесьте в дочернем окне сркипты на onload
не помогло.

Видимо браузер возвращается к выпонению этого кода
player.movie = movie;
player.title = title;

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

Dicot 28.04.2009 09:01

Вот еще информация к размышлению:
<html>
  <head>
    <title>launcher</title>
    <script type = "text/javascript">
      function openPlayer(){ 
        open('player.html', '_blank', 'width=200,height=200');
        alert('launcher');
      };
    </script>
  </head>
  <body>
    <p onclick = "openPlayer();">launch</p>
  </body>
</html>


<html>
  <head>
    <title>player</title>
    <script type = "text/javascript">
      alert('player');
    </script>
  </head>
  <body>
    <p>player</p>  
  </body>
</html>

-первое окошко запускает второе. Причем оба alert'а появляются одновременно, т.е. не блокируют друг друга.
Похоже что код в разных окнах выполняется в разных потоках.

x-yuri 28.04.2009 09:53

да
http://javascript.ru/start/events/timing

Dicot 28.04.2009 15:18

x-yuri спасибо за ссылку. Статья в тему!


Часовой пояс GMT +3, время: 20:36.