我正在设计一个应急响应页面,它需要在 3 个不同的显示器上显示信息。第一个监视器将收集有关调用者的信息,然后包含 2 个链接。第一个链接需要在第二台显示器上显示不同的网页,第二个链接需要在第三台显示器上显示不同的网页。
这可能吗?
谢谢你的帮助
您可以使用属性 target="windowName" 在不同的窗口中打开链接。
您必须手动设置三个窗口,因此手动将它们分配给三个屏幕。当您在窗口中再次打开链接时,它仍然在同一屏幕上。
看看Java:获取一个/所有可用显示器的分辨率(而不是整个桌面)?
(答案讨论了 GraphicsEnvironment.getLocalGraphicsEnvironment() 调用)
如果您确实希望将窗口锁定到特定监视器,则需要实现此客户端。这是一个链接,描述了如何在 Java 中检测窗口在哪个监视器上,因此您可以将其移动到正确的监视器并根据需要最大化窗口。显然,您可以实现系统服务器端的其余部分,只在您创建的窗口内显示页面。
第一个链接需要在第二台显示器上显示不同的网页,第二个链接需要在第三台显示器上显示不同的网页。
虽然根据您的操作系统,可以控制窗口出现的位置,但使用 javascript / 服务器端代码而不是 HTTP / 浏览器执行此操作的选项要少得多。
实现这一点的唯一明智方法是将显示器配置为更大显示器的拼贴而不是独立屏幕(对于 *nix/BSD/Linux,请查看 xinerama)。
下面的代码保存了窗口的大小 - 并且只需要一些简单的更改来支持 x/y 偏移和多个窗口 - 我把它留给你如何区分窗口。
一种更简单的方法是只使用一个带有边框的大窗口,其边框与显示器对齐。
if (document.getElementById && !document.all) { // NOT for MSIE
stickySizeOverloadOnload(stickySizeSetWindowSize);
stickySizeOverloadOnresize(stickySizeSaveWindowSize);
}
function stickySizeSaveWindowSize(event)
{
var expiry = new Date();
var path = document.location.pathname;
expiry.setDate(expiry.getDate()+500);
stickySizeSetCookie('windowSize', window.outerWidth + ',' + window.outerHeight, expiry, path);
}
function stickySizeSetWindowSize()
{
var saved=stickySizeGetCookie('windowSize');
var parts=new Array();
if (saved.length) {
parts = saved.split(',');
if ((parts[0]>100) && (parts[1]>100)) {
window.outerWidth=parts[0];
window.outerHeight=parts[1];
} else {
alert("invalid size - '" + saved + "'");
stickySizeDeleteCookie('windowSize');
}
}
}
function stickySizeOverloadOnload(func)
{
var oldhandler=window.onload;
if (typeof window.onload != "function") {
window.onload=func;
} else {
window.onload=function(event) {
oldhandler(event);
func(event);
}
}
}
function stickySizeOverloadOnresize(func)
{
var oldhandler=window.onresize;
if (typeof window.onresize != "function") {
window.onresize=func;
} else {
window.onresize=function(event) {
oldhandler(event);
func(event);
}
}
}
function stickySizeSetCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
document.cookie = curCookie;
}
function stickySizeGetCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
} else
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1)
end = dc.length;
return unescape(dc.substring(begin + prefix.length, end));
}
function stickySizeDeleteCookie(name, path, domain) {
if (stickySizeGetCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}