Ответ 1
Проверьте этот http://bytes.com/topic/javascript/insights/913606-javascript-communication-between-browser-windows-tabs его все объяснение там.
Или посмотрите эту демонстрацию http://theprivateland.com/bncconnector/demo.htm
Как я могу иметь две вкладки (или окна), которые находятся в одном домене, иметь возможность разговаривать друг с другом без необходимости иметь один экземпляр окна другой.
Изменить: почему это было отмечено как дубликат, когда это было задано перед другим вопросом?
Проверьте этот http://bytes.com/topic/javascript/insights/913606-javascript-communication-between-browser-windows-tabs его все объяснение там.
Или посмотрите эту демонстрацию http://theprivateland.com/bncconnector/demo.htm
Я нашел способ, я могу сделать два флеш-ролика на каждой странице с помощью LocalConnection для вызова JavaScript на другой странице с помощью внешнего интерфейса.
Поместите это в AS3 swf, это приемник:
import flash.external.ExternalInterface;
import flash.net.LocalConnection;
var mLocalConnection:LocalConnection;
mLocalConnection = new LocalConnection();
mLocalConnection.connect("xivioview");
mLocalConnection.client=this;
function recieveText(textRecieved):void {
ExternalInterface.call(textRecieved);
};
И отправитель swf:
import flash.external.ExternalInterface;
import flash.net.LocalConnection;
function sendtoview(con,val):String {
//create local connection for sending text
var sending_lc:LocalConnection;
sending_lc = new LocalConnection();
sending_lc.send("xivioview", "recieveText", val);
return "kk"
}
ExternalInterface.addCallback("sendtoview", sendtoview);
Это настроено для одностороннего использования, а javascript - для него:
document.getElementById("youembeddedobject").sendtoview("xivioview","alert('Hai!')")
Это выполнит этот код JavaScript на вкладке получателя, но он не будет выполняться до тех пор, пока вы не вернетесь на эту вкладку (я уже задал вопрос, почему и пока не получил ответа)
Общение между различным контекстом выполнения JavaScript поддерживалось даже до HTML5, если документы были одного источника. Если нет или у вас нет ссылки на другой объект Window
, вы можете использовать новый postMessage API, представленный с HTML5. Я подробно остановился на обоих подходах в этом fooobar.com/questions/44598/....
Единственный способ, которым я могу думать, - использовать XHR. Каждое окно/вкладка связывается с сервером, который, в свою очередь, обменивается данными с другими окнами, практически так же работает gmail chat. За исключением того, что у вас было бы 2 окна на одном клиенте, а не на одном окне на 2 клиента.
Я бы просто выполнил javascript на загрузке страницы, который будет непрерывно опроса (window.setInterval) sessionStore для флага, говорящего, что кто-то отправил мне сообщение, затем прочитал это сообщение из sessionStore и затем выполнил все, что требуется.