【问题标题】:Disable Right Click on WordPress Site禁用右键单击 WordPress 网站
【发布时间】:2021-09-10 00:17:19
【问题描述】:

我想禁用右键单击我的 wordpress 网站。我写了一个小的 sn-p 并插入到禁用右键单击、CTRL 事件和按键的正文中。

<body oncontextmenu="return false" onselectstart="return false" onkeydown="if ((arguments[0] || window.event).ctrlKey) return false"></body>

但是当我想在现场复制一些东西时很烦人。有没有办法可以修改当前的 sn-p,就像只有登录的用户才能访问禁用的事件?

干杯。

【问题讨论】:

  • 嗯,我明白了@RonvanderHeijden 重点是窃取内容。我想禁用 CTRL + 复制并右键单击。具有基本知识的人不会知道使用快捷方式查看源代码。
  • 当客户要求这样做时,你就那样做。 :/ 我知道,作为 SE,我明白了。
  • 我不清楚你的意思。在这种情况下,哪些因素会影响用户体验。

标签: php html wordpress code-snippets


【解决方案1】:

首先我在名为“preventcopy.js”的目录中创建了一个JS页面,并添加了使用下面的JS限制事件

document.oncontextmenu = function() {
  return false
};
document.onselectstart = function() {
  if (event.srcElement.type != "text" && event.srcElement.type != "textarea" && event.srcElement.type != "password") return false;
    else return true;
  };
  if (window.sidebar) {
    document.onmousedown = function(e) {
      var obj = e.target;
      if (obj.tagName.toUpperCase() == "INPUT" || obj.tagName.toUpperCase() == "TEXTAREA" || obj.tagName.toUpperCase() == "PASSWORD") return true;
     else return false;
  }
};
if (parent.frames.length > 0) top.location.replace(document.location);

然后在function.php中,我启用了登录用户的访问权限,如下所示。

function copyrightpro_scripts() {
    wp_enqueue_script( 'copyrightpro', get_template_directory_uri() . '/copyprevent.js', array(), false );
}
if ( !is_user_logged_in() ) {
    add_action( 'wp_enqueue_scripts', 'copyrightpro_scripts' );
}

就这样完成了。但考虑到用户体验,我强烈建议为用户启用这些功能。

【讨论】:

    【解决方案2】:

    只需禁用上下文菜单不选择或其他事件。

    <body <?php if(!is_user_logged_in()) { echo 'oncontextmenu="return false"'; }?>></body>
    

    【讨论】:

    • 请阅读问题。登录的用户可以在其他人不应该的情况下右键单击或复制内容。
    【解决方案3】:

    您可以简单地在 body 标记内放置一个条件。您可能希望在主题的 header.php 文件中使用它。您还希望 wordpress 函数 body_class 包含应该出现在 body 标记中的所有其他类。

    <body <?php if ( !is_user_logged_in() ) {
        echo 'oncontextmenu="return false" onselectstart="return false" onkeydown="if ((arguments[0] || window.event).ctrlKey) return false"';
    } ?> <?php body_class(); ?>>
    

    【讨论】:

    • 不幸的是,霍华德,它似乎不起作用。在 header.php 中注入。而且我并没有明确包含所有其他类。
    • 你需要找到body在你的主题中声明的位置。
    • 我是通过elementor自定义代码注入的。
    • 你是怎么做到的?解释一下,就像我不知道这个 elementir 自定义代码是什么一样。如果相关,请添加到您的问题中。我会说我也同意其他 cmets 禁用右键单击是没有意义的。
    • 禁用右键单击是没有意义的,我明白了。出于某种原因,它需要添加 sn-p 以禁用突出显示内容并复制粘贴或查看其源代码。您共享的 sn-p,我插入 elementor 自定义代码正文开始而不是我的主题正文。我的主题文件有点复杂。
    【解决方案4】:

    为什么不使用现有的 wordpress 插件?

    例如using this

    此插件用于禁用网站的右键单击,以防止剪切、复制、粘贴、保存图像、查看源代码、检查元素等。

    但当管理员或站点编辑器登录后,他可以访问所有内容而不受上述任何限制。

    【讨论】:

    • 插件推荐在本站被视为离题。
    • 谢谢,我尽量不使用插件。
    猜你喜欢
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2013-10-05
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多