-3

可以这样制作网页吗?如何?我可以在 javascript 中使用 onunload 或 onbeforeunload 之类的事件,但不是每个浏览器都可以处理它。

4

4 回答 4

2

人们可能不会喜欢这个,但一个选项是用来localStorage存储打开了多少个窗口。在您的页面<head>部分:

// Check localStorage item - if it exists, see if the count is 3 (or greater, I guess)
//   -If so, redirect this page somewhere else (attempt to use window.close(), otherwise redirect this page to some other page)
//   -If not, increment the counter
// If localStorage item doesn't exist - create it and set it to 1
// What I mean by "item" is that localStorage is basically key/value pairs, so check for your key you want to store this as    

$(window).on("unload", function () {
    // Decrement count in localStorage
});

我不确定当浏览器进程以意外方式终止时“卸载”如何工作,但这可能是个问题。

于 2012-10-03T16:57:04.257 回答
2

这是不可能的。您无法更改用户可以从远程服务器打开的选项卡数量。

于 2012-10-03T16:46:08.077 回答
1

这有点粗糙,但可能会奏效。如果您可以识别用户(登录等),那么您可以让基于 JS 的心跳消息从浏览器发送到您的服务器,每隔 1-2 秒使用用户名和每个打开页面的唯一标识符。这样一来,您就可以在服务器上根据用户收到的独特心跳数,了解该页面为用户打开的选项卡数量,如果他尝试第四次,您可以拒绝从服务器提供该页面。一旦心跳消息停止 30 秒或 1 分钟(超时),您可以考虑关闭选项卡。

这可以处理意外的浏览器关闭,并且不需要对客户端环境进行任何特殊访问。

于 2012-10-03T17:10:06.983 回答
1

这是不可能的。您无法阻止网站以这种方式打开新标签页。或者用户应该允许你访问他的电脑以保持标签的数量..(但到底谁会接受呢?)

于 2012-10-03T16:46:13.043 回答