经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
html加水印及禁右键
来源:cnblogs  作者:风岸  时间:2021/12/31 8:57:55  对本文有异议

html加水印及禁右键

遇到的一个需求,记录一下

js加水印(网上找的)

  1. function watermark(settings) {
  2. //默认设置
  3. var defaultSettings = {
  4. watermark_txt:"text",
  5. watermark_x:1,//水印起始位置x轴坐标
  6. watermark_y:1,//水印起始位置Y轴坐标 window.body.clientHeight/2
  7. watermark_rows:20,//水印行数
  8. watermark_cols:20,//水印列数
  9. watermark_x_space:50,//水印x轴间隔
  10. watermark_y_space:50,//水印y轴间隔
  11. watermark_color:'#000000',//水印字体颜色
  12. watermark_alpha:0.2,//水印透明度
  13. watermark_fontsize:'120px',//水印字体大小
  14. watermark_font:'宋体',//水印字体
  15. watermark_width:window.innerWidth-200,//水印宽度
  16. watermark_height:450,//水印长度
  17. watermark_angle:25//水印倾斜度数
  18. };
  19. if (arguments.length === 1 && typeof arguments[0] === "object") {
  20. var src = arguments[0] || {};
  21. for (key in src) {
  22. if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key]) continue;
  23. else if (src[key]) defaultSettings[key] = src[key];
  24. }
  25. }
  26. var oTemp = document.createDocumentFragment();
  27. //获取页面最大宽度
  28. var page_width = Math.max(document.body.scrollWidth, document.body.clientWidth);
  29. var cutWidth = page_width * 0.0150;
  30. var page_width = page_width - cutWidth;
  31. //获取页面最大高度
  32. var page_height = Math.max(document.body.scrollHeight, document.body.clientHeight) + 450;
  33. page_height = Math.max(page_height, window.innerHeight - 30);
  34. //如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
  35. if (defaultSettings.watermark_cols == 0 || (parseInt(defaultSettings.watermark_x + defaultSettings.watermark_width * defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (defaultSettings.watermark_cols - 1)) > page_width)) {
  36. defaultSettings.watermark_cols = parseInt((page_width - defaultSettings.watermark_x + defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
  37. defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
  38. }
  39. //如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
  40. if (defaultSettings.watermark_rows == 0 || (parseInt(defaultSettings.watermark_y + defaultSettings.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (defaultSettings.watermark_rows - 1)) > page_height)) {
  41. defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
  42. defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));
  43. }
  44. var x;
  45. var y;
  46. for (var i = 0; i < defaultSettings.watermark_rows; i++) {
  47. y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
  48. for (var j = 0; j < defaultSettings.watermark_cols; j++) {
  49. x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;
  50. var mask_div = document.createElement('div');
  51. mask_div.id = 'mask_div' + i + j;
  52. mask_div.className = 'mask_div';
  53. mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
  54. //设置水印div倾斜显示
  55. mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
  56. mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
  57. mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
  58. mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
  59. mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
  60. mask_div.style.visibility = "";
  61. mask_div.style.position = "absolute";
  62. mask_div.style.left = x + 'px';
  63. mask_div.style.top = y + 'px';
  64. mask_div.style.overflow = "hidden";
  65. mask_div.style.zIndex = "9999";
  66. //让水印不遮挡页面的点击事件
  67. mask_div.style.pointerEvents = 'none';
  68. mask_div.style.opacity = defaultSettings.watermark_alpha;
  69. mask_div.style.fontSize = defaultSettings.watermark_fontsize;
  70. mask_div.style.fontFamily = defaultSettings.watermark_font;
  71. mask_div.style.color = defaultSettings.watermark_color;
  72. mask_div.style.textAlign = "center";
  73. mask_div.style.width = defaultSettings.watermark_width + 'px';
  74. mask_div.style.height = defaultSettings.watermark_height + 'px';
  75. mask_div.style.display = "block";
  76. oTemp.appendChild(mask_div);
  77. };
  78. };
  79. document.body.appendChild(oTemp);
  80. }

js禁右键(网上找的)

  1. document.oncontextmenu = function(){return false}

java

  1. import java.io.*;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class ExcelFileIO {
  5. /**
  6. * 加水印及禁右键
  7. * @param folder :文件夹地址
  8. * @param text :水印内容
  9. */
  10. public static void addWaterMark(String folder,String text){
  11. try {
  12. List<String> fileList = new ArrayList<String>();
  13. getFilesList(new File(folder),fileList);
  14. for (String url:fileList){
  15. fileWatermarkIO(url,text);
  16. fileForbiddenIO(url);
  17. }
  18. }catch (Exception e){
  19. e.printStackTrace();
  20. }
  21. }
  22. /**
  23. * 禁右键
  24. * @param folder 文件夹地址
  25. */
  26. public static void addForbidden(String folder){
  27. try {
  28. List<String> fileList = new ArrayList<String>();
  29. getFilesList(new File(folder),fileList);
  30. for (String url:fileList){
  31. fileForbiddenIO(url);
  32. }
  33. }catch (Exception e){
  34. e.printStackTrace();
  35. }
  36. }
  37. //读
  38. public static String fileInput(String url) {
  39. try {
  40. FileInputStream fis = new FileInputStream(url);
  41. BufferedInputStream bis = new BufferedInputStream(fis);
  42. String content = null;
  43. //字符缓冲区
  44. byte[] buffer = new byte[10240];
  45. int flag = 0;
  46. while ((flag = bis.read(buffer)) != -1) {
  47. content += new String(buffer, 0, flag);
  48. }
  49. //关闭流
  50. bis.close();
  51. return content;
  52. } catch (
  53. Exception e) {
  54. e.printStackTrace();
  55. }
  56. return "";
  57. }
  58. //写
  59. public static Boolean fileOutput(String url, String context){
  60. Boolean result = false;
  61. try {
  62. FileOutputStream fos=new FileOutputStream(url);
  63. BufferedOutputStream bos=new BufferedOutputStream(fos);
  64. String content=context;
  65. bos.write(content.getBytes(),0,content.getBytes().length);
  66. bos.flush();
  67. bos.close();
  68. result = true;
  69. } catch (Exception e) {
  70. e.printStackTrace();
  71. }
  72. return result;
  73. }
  74. //加水印
  75. public static Boolean fileWatermarkIO(String fileUrl, String waterMarkText) throws FileNotFoundException, UnsupportedEncodingException {
  76. //读出内容
  77. String textHtml = fileInput(fileUrl);
  78. //水印的js
  79. String context ="\n<script type=\"text/javascript\">\n" +
  80. "window.onload=function(){\n" +
  81. "var defaultSettings = {\n" +
  82. " watermark_txt:\"" + waterMarkText + "\",\n" +
  83. "\t\twatermark_x:(100),\n" +
  84. "\t\twatermark_y:(window.innerHeight/2-60),\n" +
  85. "\t\twatermark_rows:1,\n" +
  86. "\t\twatermark_cols:1,\n" +
  87. "\t\twatermark_x_space:50,\n" +
  88. "\t\twatermark_y_space:50,\n" +
  89. "\t\twatermark_color:'#000000',\n" +
  90. "\t\twatermark_alpha:0.2,\n" +
  91. "\t\twatermark_fontsize:'120px',\n" +
  92. "\t\twatermark_font:'宋体',\n" +
  93. "\t\twatermark_width:window.innerWidth-200,\n" +
  94. "\t\twatermark_height:450,\n" +
  95. "\t\twatermark_angle:25\n" +
  96. " };\n" +
  97. " if (arguments.length === 1 && typeof arguments[0] === \"object\") {\n" +
  98. " var src = arguments[0] || {};\n" +
  99. " for (key in src) {\n" +
  100. " if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key]) continue;\n" +
  101. " else if (src[key]) defaultSettings[key] = src[key];\n" +
  102. " }\n" +
  103. " }\n" +
  104. " var oTemp = document.createDocumentFragment();\n" +
  105. " var page_width = Math.max(document.body.scrollWidth, document.body.clientWidth);\n" +
  106. " var cutWidth = page_width * 0.0150;\n" +
  107. " var page_width = page_width - cutWidth;\n" +
  108. " var page_height = Math.max(document.body.scrollHeight, document.body.clientHeight) + 450;\n" +
  109. " page_height = Math.max(page_height, window.innerHeight - 30);\n" +
  110. " var x;\n" +
  111. " var y;\n" +
  112. " for (var i = 0; i < defaultSettings.watermark_rows; i++) {\n" +
  113. " y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;\n" +
  114. " for (var j = 0; j < defaultSettings.watermark_cols; j++) {\n" +
  115. " x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;\n" +
  116. " var mask_div = document.createElement('div');\n" +
  117. " mask_div.id = 'mask_div' + i + j;\n" +
  118. " mask_div.className = 'mask_div';\n" +
  119. " mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));\n" +
  120. " mask_div.style.webkitTransform = \"rotate(-\" + defaultSettings.watermark_angle + \"deg)\";\n" +
  121. " mask_div.style.MozTransform = \"rotate(-\" + defaultSettings.watermark_angle + \"deg)\";\n" +
  122. " mask_div.style.msTransform = \"rotate(-\" + defaultSettings.watermark_angle + \"deg)\";\n" +
  123. " mask_div.style.OTransform = \"rotate(-\" + defaultSettings.watermark_angle + \"deg)\";\n" +
  124. " mask_div.style.transform = \"rotate(-\" + defaultSettings.watermark_angle + \"deg)\";\n" +
  125. " mask_div.style.visibility = \"\";\n" +
  126. " mask_div.style.position = \"absolute\";\n" +
  127. " mask_div.style.left = x + 'px';\n" +
  128. " mask_div.style.top = y + 'px';\n" +
  129. " mask_div.style.overflow = \"hidden\";\n" +
  130. " mask_div.style.zIndex = \"9999\";\n" +
  131. " mask_div.style.pointerEvents = 'none';\n" +
  132. " mask_div.style.opacity = defaultSettings.watermark_alpha;\n" +
  133. " mask_div.style.fontSize = defaultSettings.watermark_fontsize;\n" +
  134. " mask_div.style.fontFamily = defaultSettings.watermark_font;\n" +
  135. " mask_div.style.color = defaultSettings.watermark_color;\n" +
  136. " mask_div.style.textAlign = \"center\";\n" +
  137. " mask_div.style.width = defaultSettings.watermark_width + 'px';\n" +
  138. " mask_div.style.height = defaultSettings.watermark_height + 'px';\n" +
  139. " mask_div.style.display = \"block\";\n" +
  140. " oTemp.appendChild(mask_div);\n" +
  141. " };\n" +
  142. " };\n" +
  143. " document.body.appendChild(oTemp);\n" +
  144. " }\n" +
  145. "</script>";
  146. //用标签锁定添加位置
  147. String indexStr = "</body>";
  148. //组装
  149. String newText = textHtml.replace(indexStr,indexStr+context);
  150. //读的时候出现的问题,需要去除
  151. newText = newText.replaceAll("null","");
  152. //清空源文件里的内容
  153. new PrintWriter(fileUrl,"UTF-8");
  154. //写入
  155. return fileOutput(fileUrl,newText);
  156. }
  157. //禁用右键
  158. public static Boolean fileForbiddenIO(String fileUrl) throws FileNotFoundException, UnsupportedEncodingException {
  159. String textHtml = fileInput(fileUrl);
  160. String context ="\ndocument.oncontextmenu = function(){return false}";
  161. String indexStr = "<script language=\"JavaScript\">";
  162. String newText;
  163. if (textHtml.indexOf(indexStr)==-1){//如果没有script就添加
  164. context ="\n<script type=\"text/javascript\">\n" +
  165. "document.oncontextmenu = function(){return false}\n"+
  166. "</script>";
  167. indexStr = "</body>";
  168. newText = textHtml.replace(indexStr,indexStr+context);
  169. }else {
  170. newText = textHtml.replace(indexStr,indexStr+context);
  171. }
  172. newText = newText.replaceAll("null","");
  173. new PrintWriter(fileUrl,"UTF-8");
  174. return fileOutput(fileUrl,newText);
  175. }
  176. //获取文件路径数组
  177. public static void getFilesList(File filesFolder, List<String> fileNames){
  178. if (!filesFolder.exists() || !filesFolder.isDirectory()) {
  179. return;
  180. }
  181. String[] files = filesFolder.list();
  182. for (int i = 0; i < files.length; i++) {
  183. File file = new File(filesFolder, files[i]);
  184. if (file.isFile()) {//是文件
  185. if (file.getName().endsWith(".htm")||file.getName().endsWith(".html")){//如果后缀符合储存
  186. fileNames.add(filesFolder + file.separator + file.getName());
  187. }
  188. } else {//是目录
  189. getFilesList(file, fileNames);
  190. }
  191. }
  192. }
  193. }

原文链接:http://www.cnblogs.com/fengdebian/p/15747766.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号