我们有一个传统的Web应用程序。 在不同的地方它会打开权限管理员对Firefox浏览器的帮助,以获得所需结果的窗口。 有些窗户打开,Java applet或PDF文档。 客户机正在更新Firefox和权限管理员走了。
什么是它周围的最简单的方法? 这些问题是:
必须有只有一个人时弹出的实例。 这可以通过选择合适的窗口名行
window.open()
调用。如果再次打开窗口(由用户操作的手段),它不应该重新加载,但只关注将其带到前台(我已经看到了,我可以继续对JavaScript的窗口的引用来做到这一点)
- 它基本上真的必须是瞬时/模式,使客户端不能离开当前页面或重装或任何其他形式的互动与父窗口(除开/重新聚焦子窗口)不首先关闭子窗口。 我不知道该怎么做。
不要任何人有一个想法如何做到这一点?
客户端只有火狐(它工作在一个特殊的亭配置)在Linux上。
我读的地方,我可以以某种方式编写扩展,但我基本上是无能的扩展及其API。
EDIT1:
的(简化的)遗留的代码示例。 真的不知道,如果所有的权限被要求,但这是它:该功能可打开一个停留在父窗口,防止从父窗口的用户进行任何交互的窗口。
function fWindowOpen(url, name) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
netscape.security.PrivilegeManager
.enablePrivilege("CapabilityPreferencesAccess");
netscape.security.PrivilegeManager
.enablePrivilege("UniversalPreferencesWrite");
netscape.security.PrivilegeManager
.enablePrivilege("UniversalPreferencesRead");
netscape.security.PrivilegeManager.enablePrivilege("UniversalFileRead");
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
window.open(
url,
name,
"screenX=70,dependent=yes,menubar=0,toolbar=0,width=900,height=700,modal=1,dialog=1"
);
}
function fnCapture(){
fWindowOpen("/path/to/document_or_japplet/page","_blank");
}
HTML:
<button value="Capture" property="btnCapture" onclick="javascript:fnCapture();"/>
EDIT2:解决方案
在一个典型的扩展,在第XUL代码,定义这个javascript代码:
var dialogExt = {
listener: function(evt) {
// Do work with parameters read through evt.target.getAttribute("attribute_name")
window.openDialog(evt.target.getAttribute("url"), evt.target.getAttribute("name"), evt.target.getAttribute("features"));
}
}
// from examples
document.addEventListener("dialogExtEvent", function(e){ dialogExt.listener(e); }, false, true);
然后,在网页上:
var element = document.createElement("dialogExtElement");
element.setAttribute("url", url);
element.setAttribute("name", name);
element.setAttribute("features", features);
document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("dialogExtEvent", true, false);
element.dispatchEvent(evt);
现在,也许我错过了一些安全检查,以让代码工作,如果它在同一台主机发起,以及如何处理该请求的对话框,对话框窗口之间的交互方式的文档的引用,它的揭幕战。