【问题标题】:Disable buttons (F12)禁用按钮 (F12)
【发布时间】:2018-07-05 19:01:02
【问题描述】:

我会禁用我的 HTML 测试页面上的一些按钮(F12右键单击Ctrl-U)。

我的代码有效,但 F12 似乎已启用,并且当他 活动 时(我的意思是,当我按下并看到“分析页面”,Ctrl-U开始工作)。

我已经在这里发布了 JavaScript 代码,以获取一些建议:

//  DX MOUSE
//============

var message="";

function clickIE() {if (document.all) {(message);return false;}}
function clickNS(e) {if
(document.layers||(document.getElementById&&!document.all)) {
if (e.which==2||e.which==3) {(message);return false;}}}
if (document.layers)
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}

document.oncontextmenu=new Function("return false")


//  F12
//==========

  document.onkeypress = function (event) {
    event = (event || window.event);
    if (event.keyCode == 123) {
      // alert('No F-12');
      return false;
    }
  };


//    CTRL + U
//==============

  document.onkeydown = function(e) {
    if (e.ctrlKey &&
      (e.keyCode === 85)) {
          // alert('not allowed');
          return false;
        }
      };

PS 如果我禁用“alert”:点击两次后,Mozilla 上会出现 popup 和代码停止工作。

【问题讨论】:

  • 如果你想禁用查看源代码,那么现在就放弃吧,这不值得你努力。有太多其他(非浏览器)方法可以获取您的源代码 - 例如curlHttpClientajax
  • 覆盖网络浏览器的默认行为通常是个坏主意。 stackoverflow.com/questions/12381563/… 。尝试查找 kiosk 模式或使用电子(nodejs 包)
  • 对不起,我的问题超出了主题。 kisok 或 electron,表示客户端需要运行一个可执行文件
  • 尝试创建另一个线程以使用 setTimeout 显示警报,看看会发生什么 setTimeout(function(){/*alert*/})。

标签: javascript jquery button keyboard


【解决方案1】:

最大的问题是为什么

您为什么要尝试阻止正常和众所周知的浏览器行为?如果你想保护你的前端资源,这是不可能的。任何高于入门级知识的人都可以绕过这一点。

一个更简单的解决方案是缩小和丑化你的 JS,这样会更有效。这绝不是万无一失的,有人仍然可以分解并弄清楚您的代码是如何工作的,但是您使他的工作变得更加困难。

无论如何,与后端的所有交互都不应该在前端受到保护(至少不作为唯一的保护手段),在后端对数据和操作进行清理,您可以控制环境并确保代码和数据完好无损.

正面的一切都暴露在外,没有什么是安全的,对待它的信息就像对待从角落里卖裂缝的阴暗人那里获得的信息一样。

话虽如此,让我们回答这个问题:

$(document).keydown(function (event) {
    if (event.keyCode == 123) { 
        return false;
    }
});

如果你仍然坚持这样做,你可能想添加到上面的函数中:

    if (event.ctrlKey && event.shiftKey && event.keyCode == 73) { 
        return false;
    }

为了防止 ctrl shift i

还有在某个地方通过调用preventDefault() 来防止contextmenu 事件发生时;

【讨论】:

  • 您好,您的问题的答案是:最近我开始在知名商业网站上销售我的 html 模板。如果有人设法非法占有它,我会很困扰。我的意思是,我花了很多时间在建筑和设计上,最后我想得到报销。非常正确?这主要是为什么我正在寻找一些技巧来避免它。不幸的是,我不知道有多少方法可以保证源代码的安全(假设它们存在),这就是我想到的全部。我知道有专门的软件,但我对这个主题太无知了,无法与之抗衡。
  • 很公平,但请记住,任何 DOM 解析器或抓取工具都会在页面加载的瞬间获取您的模板。这种方法可能会避开不精通技术的人,但任何有一定经验的人都可以轻松窃取您的 HTML 模板和 CSS。另一种方法是展示您在不同屏幕尺寸下的页面图像,或者制作一个简单的演示,仅占整个模板/CSS/JS 的一小部分,以向潜在买家展示。此外,您可以制作整个演示站点的视频。
猜你喜欢
  • 2011-02-02
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
相关资源
最近更新 更多