最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to prevent copy paste in vue.js - Stack Overflow

programmeradmin1浏览0评论

In order to to make life hard for content thieves, I'd like to disable copy-paste of rendered texts on vue.js ponents.

Here is an example template :

<template>
  <div id="my-precious-content">
    <div class="container"> 
      <div> Some {{texts}} e here </div>
      <div> Still {{moreTexts}} here </div>
    </div>
  </div>
</template> 

I'm wondering how to achieve this?

In order to to make life hard for content thieves, I'd like to disable copy-paste of rendered texts on vue.js ponents.

Here is an example template :

<template>
  <div id="my-precious-content">
    <div class="container"> 
      <div> Some {{texts}} e here </div>
      <div> Still {{moreTexts}} here </div>
    </div>
  </div>
</template> 

I'm wondering how to achieve this?

Share asked Dec 1, 2017 at 7:49 KarlomKarlom 14.9k29 gold badges78 silver badges118 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 10

Moral point of view: You shouldn't. It's breaking user experience for normal users. They cant copy things to translate them to another language, cant copy links and so on.

Short answer: You can't.

Long answer: You can make it a bit harder, but they are still gonna be able to copy it (unless you convert it to an image). Easiest way to prevent copying is preventing selecting text, you do it with css like that:

.container {
    -webkit-user-select: none;  
    -moz-user-select: none;  
    -ms-user-select: none;  
    -o-user-select: none;  
    user-select: none;
}

Another approach You could use oncopy event, but it's not standard and not recended for production by mdn web docs, so i'd stick to the css solution.

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>