【发布时间】:2014-01-22 19:55:28
【问题描述】:
我只想阻止用户获取网页的打印副本。我知道这不是用户友好的,但是,这是一个特殊的场景,一个考试界面,考生将在考试中尝试问题。所以我不希望他们打印页面。我还阻止了其他必要的选项,例如上下文菜单、alt 键、另存为 html 等,尽管它在用户的特定视图中并不好。
我已经使用 Jquery 完成了,但代码在 Safari 中不起作用。
代码:
$(document).keydown(function(event) {
// Disable Ctrl+P.
if(!event) event = window.event;
if (event.ctrlKey && (event.which === 80)) {
event.preventDefault();
alert(event.isDefaultPrevented());
}
});
但是,警报显示值“true”,然后使用打印对话框进行提示。我试过用return false代替event.preventDefault();,然后也不起作用。我不明白为什么这种奇怪的行为只在 Safari 中出现。请帮忙。谢谢:)-
【问题讨论】:
-
请不要阻止您的用户做任何事情;您拥有的任何代码都是可绕过的,这只会让您的用户感到沮丧。你知道用户也可以使用上下文菜单吗?
-
这是错误的做法。他们仍然可以使用菜单中的
Print。 -
我讨厌尝试做这种事情的网站。保护您的内容的唯一方法是不发布它。我的打印菜单仍然可以正常工作(许多用户甚至不知道 Control-P 的作用)
-
谢谢大家。我同意你们的看法。但是,这是一个特殊的场景,一个考试界面,考生将在考试中尝试问题。所以我不希望他们打印页面。我还屏蔽了上下文菜单、alt 键、另存为 html 等。
-
那些投了反对票的人,当我搜索我的查询时,我没有得到这样的链接。那么,这怎么可能是一个重复的问题呢?另外,当我真诚地提出查询时,我是否需要确保堆栈溢出中没有此类相关问题?如果是这样,那就不公平了。