【问题标题】:Block Ctrl+P event in a web page using jQuery - issue in Safari browser使用 jQuery 在网页中阻止 Ctrl+P 事件 - Safari 浏览器中的问题
【发布时间】: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 等。
  • 那些投了反对票的人,当我搜索我的查询时,我没有得到这样的链接。那么,这怎么可能是一个重复的问题呢?另外,当我真诚地提出查询时,我是否需要确保堆栈溢出中没有此类相关问题?如果是这样,那就不公平了。

标签: jquery events


【解决方案1】:

你可以试试这个代码:

$(document).on("keyup keydown", function(e){
    if(e.ctrlKey && e.keyCode == 80){
        alert('Ctrl + P pressed!');
        return false;
    }
});

Demo

【讨论】:

  • Felix:你在 safari 中检查过吗?警报没问题。但是,即使我们设置了“return false”,它也会显示打印对话框。
猜你喜欢
  • 2016-01-27
  • 2015-11-16
  • 2011-02-09
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2016-02-04
相关资源
最近更新 更多