联系JavaScript帧间通讯和一个办理网络通讯的Java Applet,咱们可以用推送技能处理这个问题。在这样一个体系中,Java Applet的使命是衔接服务器并监听内容更新。一旦接纳到了新的内容,Applet就构造出显现这些新内容的HTML代码,调用一个Javascript函数并把包括新内容的HTML传递给JavaScript函数。JavaScript函数运用DHTML和DOM技能,把页面中一个 符号的内容用参数中传入的新内容更换。因为浏览器安全的约束,Applet所打开的Socket端口只能衔接到下载该Applet的服务器。
Web服务器只在80端口监听衔接恳求。因而,除了Web服务器以外,咱们还需要一个接受Applet的Socket衔接恳求的网络应用服务。这个网络应用服务守时地查询数据库,把改动数据发布(推送)到一切现已衔接的Applet。因为运用了躲藏帧和JavaScript的帧间通讯功用,咱们可以从用户面前躲藏大多数JavaScript逻辑。
在这全部处理过程中,艰难的使命是Java Applet与JavaScript代码之间的通讯。Netscape供给了一个称为netscape.javascript.JSObject的类。要运用这个目标,请参加一个包括特别“MAYSCRIPT”特点的Applet符号:
JSObject的办法允许Applet与文档目标交互以及调用JavaScript指令。例如,把下面的代码放入Applet,咱们就可以拜访窗口目标:
import netscape.javascript.*; public class MyApplet extends java.applet.Applet{ PRivate JSObject mainwin; public void init(){ mainwin = JSObject.getWindow(this); } }
取得JSObject引用后,咱们就可以拜访文档窗口目标,并通过JSObject的eval()办法调用JavaScript函数。