切记一次WEB、移动(Android、IOS)h5页面严禁复制、选取
背景
由于我工作单位(新闻单位)的性质,春节期间,我接到领导的紧急要求,严禁一篇文章的选编和转载。 当我收到请求时,我认为处理一些事情会很简单。 问题,虽然我现在还在从事前端工作css禁止选中,但是我也觉得这些事情没什么好担心的,所以就随口答应了1小时后上线。
我这么一说,就明显事情没那么简单。 具体情况如下:
第一次上网
我认为这些需求可以通过简单地从博客复制粘贴来解决。 紧急的文章,领导也说了,直接把ID写死就好了,后面再安排配置。
*{
-webkit-touch-callout:none; /*系统默认菜单被禁用*/
-webkit-user-select:none; /*webkit浏览器*/
-khtml-user-select:none; /*早期浏览器*/
-moz-user-select:none;/*火狐*/
-ms-user-select:none; /*IE10*/
user-select:none;
}
很简单,我直接通过CSS样式禁止浏览器选择弹窗,问题就解决了。 当我添加代码并用手机测试时css禁止选中,唉,好像没有任何变化。 然后,我又找到了一篇文章,又添加了一些应对暴风雨的操作。 代码如下:
<script type="application/javascript">
//PC端 使右键和复制失效
document.oncontextmenu = new Function("event.returnValue=false");
document.onselectstart = new Function("event.returnValue=false");
//ios
document.oncontextmenu = function (e) {
e.preventDefault();
};
document.onselectstart = function (e) {
e.preventDefault();
};
//安卓
document.addEventListener('contextmenu', function (e) {
e.preventDefault();
});
document.ontouchend = function () {
throw new Error("NO ERRPR:禁止长按弹出");
}
window.ontouchstart = function(e) {
e.preventDefault();
};
document.body.addEventListener('touchstart', function () { });
document.body.onbeforecopy = function () {
window.getSelection().removeAllRanges();
}
document.body.oncopy = function () {
window.getSelection().removeAllRanges();
return false;
}
</script>
重新测试后发现没有问题。 PC没选,很难复制。 我取下手机测试,长按后没有弹窗。 紧接着@运维同志就安排上线了。
上线完成后,通知群里其他同学一起测试,然后就炸了。 大部分手机都没有问题,但是发现有少部分手机安装了QQ浏览器、百度浏览器还是没有生效的同志。 经过多次百度(问题都是国产浏览器,找G哥也没用),发现网上也有少数人也回复了这个问题,但没有找到解决办法。 我也尝试了2个小时才找到。 没有找到理想的解决方案。 唉,放弃吧。
寻求解决方案
后来问了后端同学和一些后端大鳄,没有找到理想的解决方案。 没办法,暂时放弃解决QQ浏览器和百度浏览器的问题。 。 如果任何捕食者有解决方案,我会很高兴。