我绝对需要用户注销她/他用来访问我们数据库的网站。如果没有注销,只关闭浏览器,系统会锁定用户名一小时。 我没有实现它,它只是它的工作方式。
我想写一个简单的C#程序,它会以某种方式检测用户是否注销,如果没有,则阻止他们关闭浏览器。
1)是否有Firefox API或其他任何方式来阅读firefox.exe进程中的网站内容?
2)当用户点击“X”关闭浏览器时,是否可以中止firefox.exe进程的终止? (可能这是破坏交易的问题)。
我很感激任何提示。谢谢!
答案 0 :(得分:10)
如果您使用身份验证,则每个用户都应该有一个会话。会话可以配置为过期。您需要做的只是处理适当的session expire event。
不要寻找任何黑客来处理浏览器退出事件 - 这是一条危险的道路:
答案 1 :(得分:2)
你无法阻止用户关闭firefox,因为有很多方法可以关闭它而不能被代码控制(例如从taskmon中删除进程)。但是,您可以在代码中检测闭包事件(window.onClose()事件)并执行注销过程。
然而,在firefox(或任何其他浏览器)的情况下,被杀死而不是被关闭,window.onClose()将无法正常工作。因此,最好在服务器中处理会话,而不是依赖于客户端行为。
答案 2 :(得分:2)
您可以使用javascript检测浏览器关闭或离开您的网站,并在这些实例中触发方法或点击记录它们的网络服务。非常快速,非常简单,可以跨浏览器工作。
答案 3 :(得分:1)
您无法阻止用户使用合法方法关闭程序。这是出于明显的安全目的。
答案 4 :(得分:0)
我同意oleksii。但是你可以让用户不那么容易关闭Firefox。
我目前正在编写一个附加组件(通过SDK)来监听" quit-application-requested"观察者通知并将aSubject.data设置为true,以防止Firefox退出应用程序。
observe: function(aSubject, aTopic, aData) {
if (aTopic == "quit-application-requested") {
aSubject.QueryInterface(Ci.nsISupportsPRBool);
aSubject.data = (this.canQuit() == false);
}
}
但我真正想要的是某个窗口没有关闭,以至于不关闭Web应用程序(FileMaker数据库)。
因此,我也尝试禁用所有命令,所有键和所有菜单(浏览器XUL),如下所示:
var allCommands = win.document.getElementsByTagName("command");
for (let i = 0; i < allCommands.length; i++) {
allCommands[i].setAttribute("disabled", "true");
}
var allKeys = win.document.getElementsByTagName("key");
for (let i = 0; i < allKeys.length; i++) {
allKeys[i].setAttribute("disabled", "true");
}
var allMenus = win.document.getElementsByTagName("menu");
for (let i = 0; i < allMenus.length; i++) {
allMenus[i].setAttribute("disabled", "true");
}
但是用户仍然可以退出应用程序,从而使用Web应用程序关闭窗口,除非我阻止打开新的Firefox窗口。
所以&#34;它&#34;但是我希望他们仍然可以浏览,而不是关闭标签所在的特定标签或窗口。
在不阻止打开新窗口的情况下,它不起作用,因为显然当用户打开新窗口时,当用户按下Alt + F4时,它不会是应用程序退出而是窗口关闭。虽然我以为我已经禁用了所有命令/键/菜单,但仍然存在某种紧密的可能性。
有没有人对如何在不阻止打开新窗口的情况下实现这一目标有任何想法?