2009-12-02 4 views
6

У меня есть родительское окно браузера P. при нажатии кнопки открывается новое окно браузера WIN-A. , затем снова нажав на ту же кнопку, он должен прочитать название окна WIN-A и открыть WIN-BКак общаться между двумя окнами браузера?

Как достичь этого, используя Javascript?

Заранее спасибо

ответ

3

Аналогичный вопрос был только недавно спросили:

Stack Overflow вопрос: Quickest way to pass data to a popup window I created using window.open()?

Пользуясь тем, что в качестве основы (и при условии Родитель и WIN-A находятся на том же домене):

// Put outside click handler 
var winA = null; 

// Put inside click handler 

if(!winA){ 
    // Store the return of the `open` command in a variable 
    var winA = window.open('http://www.mydomain.com/page1'); 
} else { 
    var title = winA.document.title; 
    // Do something with title 
    var winB = window.open('http://www.mydomain.com/page2'); 
} 
4

Дано:

var myWindow = open("foo.bar"); 

Старый метод: Изменить name свойство объекта оконного:

myWindow.name = "..."; 
// in foo.bar: 
setInterval(someFunctionToCheckForChangesInName, 100); 

метод HTML5: Вызов postMessage метод объекта оконного:

myWindow.postMessage("...", "*"); 
// in foo.bar: 
(window.addEventListener || window.attachEvent)(
    (window.attachEvent && "on" || "") + "message", function (evt) { 
    var data = evt.data; // this is the data sent to the window 
    // do stuff with data 
    }, 
false); 
+2

Я никогда не видел (possibly_present_func_one || possibly_present_func_two) (арг, аргументы); техника раньше. Круто. –

+0

Trevor: Не забудьте использовать '.call (the_object_that_is_supposed_to_be_the_parent, args)', если это не свойство 'window'. –

+0

Приятно использовать причудливые задания и стенографические операции, но для такой страницы, как SO, где основное внимание уделяется обмену знаниями, это не лучший подход. Людям не нравится JS "||" - или задания должны думать, что он выглядит загадочным и неинтуитивным. –

0

При вызове window.open, он возвращает ссылку вновь открытое окно. Вы можете сохранить ссылки на окна, которые вы открываете в массиве, и затем перебрать этот массив, когда вам нужно открыть другое новое окно.

Gabriel