浏览器选项卡之间的通信,Javascript

浏览器选项卡之间的通信,Javascript,javascript,tabs,communication,Javascript,Tabs,Communication,我正在设计这个基于网络的生产管理软件,包括客户、产品和订单数据库。我试图实现以下功能 当用户想要为系统创建新订单时,应该有两种方法 第一路。用户可以首先导航到“搜索客户”页面,当他找到正确的客户时,他可以单击按钮“为该客户创建新订单”或类似的内容 然后会打开一个“添加订单”页面,其中包含关于客户的信息 在此页面上,如果用户单击“添加产品”按钮,应在新选项卡中打开“搜索产品”页面 然后,用户可以通过单击“添加此产品”按钮将产品添加到“添加订单”页面,该页面在后台选项卡中打开 当用户关闭“搜索产品”

我正在设计这个基于网络的生产管理软件,包括客户、产品和订单数据库。我试图实现以下功能

当用户想要为系统创建新订单时,应该有两种方法

第一路。用户可以首先导航到“搜索客户”页面,当他找到正确的客户时,他可以单击按钮“为该客户创建新订单”或类似的内容

然后会打开一个“添加订单”页面,其中包含关于客户的信息

在此页面上,如果用户单击“添加产品”按钮,应在新选项卡中打开“搜索产品”页面

然后,用户可以通过单击“添加此产品”按钮将产品添加到“添加订单”页面,该页面在后台选项卡中打开

当用户关闭“搜索产品”页面时,产品将在“添加订单”页面等待

第二条路。用户可以直接进入“搜索产品”-页面,当他单击相同的“添加此产品”按钮时,一种空白的“添加订单”-页面应打开到背景选项卡,其中包含新添加的产品信息

然后用户可以继续添加产品,直到完成为止

我应该如何通过“添加订单”-页面和“搜索产品”-页面之间的双向交互来实现这种依赖于发起人的交互?我应该使用cookies、ajax或某种父、子关系,并使用window.opener吗

我试着用下面的方法来实现这一点,但没有成功

//在“搜索产品”页面中的代码
var-productGB;
var-destGB;
函数JsTakeProductToOrder(product){//这是要执行的函数
如果(window.opener){//当用户单击“添加此产品…”
productGB=产品;
destGB=window.opener;
JsDeliverProduct();
}
如果(!window.opener){
productGB=产品;
if(typeof destGB==“未定义”){
destGB=window.open(“addOrder.php”);
}
否则{
JsDeliverProduct();
}
}
}
/*这里的函数JsDeliverProducts基本上只是将值分配给
destGB中的变量,如“destGB.productID=document.getElementById(productGB)
然后在最后执行destGB.addRow(),它位于“添加订单”页面上
如果在“添加订单”页面未打开的情况下执行上述功能。
页面被打开,当它被加载()时,JsPageLoaded
函数在它的开头就是这个页面上执行JsTakeProductToOrder()函数。
我可能很难解释这一点,但仍然。
*/
//“添加订单”-页面中的相关代码
函数JsPageLoaded(){//如果页面已由“搜索产品”-page it menas打开
if(window.opener){//表示要收集产品信息。
JsTakeProductToOrder();
}
}
函数JsAddProduct(){//单击并打开“添加产品”按钮时,此函数将激发
如果(!window.opener){//“搜索产品”-页面(如果尚未打开)。
如果(搜索类型=='undefined'){
search=window.open(“searchProducts.php”);
search.focus();
}
}
}
函数JsAddRow(){
警报(代码+“”+标题+“”+单位+“”+净价+“”+增值税);
search.focus();

}
您可以使用我的系统端库,它允许在打开的选项卡之间发送消息,这将是完美的……除非还没有人实现它。