侧边栏壁纸
博主头像
小新笔记坊

笔耕学思悟,细绘生活卷。

  • 累计撰写 52 篇文章
  • 累计创建 23 个标签
  • 累计收到 49 条评论

目 录CONTENT

文章目录

JavaScript常用功能代码及心得

小新笔记坊
2024-02-21 / 0 评论 / 0 点赞 / 42 阅读 / 0 字 / 正在检测是否收录...

向后端发送数据

注:post方式向后端发送json格式数据。

// 假设当用户点击提交按钮,触发以下方法
async function submitData() {    
  //定义一个变量jsonData,将全局变量data内的数据转换为json格式并传入jsonData
  const jsonData = JSON.stringify(data);
      try {
        //通过fetch方法向后端接口发送POST请求传递数据
        const response = await fetch('http://114.114.114.114:2000/api/a', {
          method: 'POST',     //规定传递方式为post
          headers: {
            'Content-Type': 'application/json',     //规定传递数据格式为json
          },
          body: jsonData,      //将要传输的数据jsonData在body里发送
        });
        //如果后端接收数据成功后返回数值为200-299,则为ok,即为提交成功
        if (response.ok) {
		//等待并解析响应体为JSON,然后将解析后的结果赋值给responseData常量,并在解析完成后弹出一个提示框显示“数据已成功在线存档!”
          const responseData = await response.json();
            alert('数据已成功提交!');
        }
      } catch (error) {
        alert('无法提交,请稍后重试。');
        console.error('Error:', error);
      }
  } 
}

存储数据至本地

注:将用户输入的json数据通过浏览器下载方式存储到本地磁盘。

// 假设当用户点击保存按钮,触发以下方法
async function submitData() {   
    //定义一个变量jsonData,将全局变量data内的数据转换为json格式并传入jsonData
    const jsonData = JSON.stringify(data);
    //定义一个变量blob用于存储下载至本地磁盘的数据,设置下载为json文件类型
    const blob = new Blob([jsonData], { type: 'application/json' });   
    //为此时存储着数据的json文件blob创建一个URL下载链接
    const url = URL.createObjectURL(blob);
    //定义一个变量a,创建一个<a>元素(超链接)并将其引用保存在变量a中
    const a = document.createElement('a');
    //将存储着数据的json文件blob的URL发送给a.href,即给超链接指定链接
    a.href = url;
//设置a.download的属性为json格式,文件名为save。当用户点击该链接时浏览器下载该链接
    a.download = 'save.json';
    a.click();
    URL.revokeObjectURL(url);
}

读取本地文件数据

注:读取本地磁盘上的json文件数据。

// 假设当用户点击本地读取按钮,触发以下方法
async function submitData() {    
//当用户选择了该文件输入控件中的文件时,会触发addEventListener方法中的'change' 事件
  fileInput.addEventListener('change', function () {  
//定义一个变量file,fileInput方法获取用户选择的文件
    const file = fileInput.files[0];  
///如果文件内容不为空,则执行以下内容
    if (file) {  
//FileReader方法异步读取用户选择的文件中的内容并保存至reader变量
      const reader = new FileReader();  
  // 定义当文件读取成功完成时执行的回调函数
      reader.onload = function (e) {  
        try {  
		  //将选择文件内容读取并赋值给data变量
          const data = JSON.parse(e.target.result);  
          // 将读取到的data值分别赋值给全局变量
//此days是前端js代码中的全局变量,全局变量可以用来保存数据
//全局变量保存的数据在整个代码文件运行中不会销毁
          days = data.days;    
          morningRoutineDays = data.morningRoutineDays;
          caloriesBurned = data.caloriesBurned; 
          weightLost = data.weightLost;  
          displayArea.innerHTML  += data.failures;
        } catch (error) {  
          alert('无法读取存档文件或文件格式不正确。');  
        }  
      };  
      reader.readAsText(file);  
    } else {  
      alert('请选择一个存档文件!');  
    }  
  }, { once: true });  
  fileInput.click();  
}

读取服务器文件数据

注:读取服务器上的json文件数据。

// 假设当用户点击在线读取按钮,触发以下方法
async function submitData() { 
try {
      //访问web服务器解析目录(/var/www/html)下的/a/save.json文件
//如果你的web服务器解析路径为(/var/www/),则访问的是/var/www/a/save.json文件
//定义一个变量response,用于接收fetch方法读取的服务器指定路径的.json文件
      const response = await fetch('/a/save.json');
      if (!response.ok) {
        throw new Error('无法读取存档文件或文件不存在!');
      }
//定义一个变量cloud_data ,response.json()方法解析响应体为JSON格式的数据
      const cloud_data = await response.json();   
 // 将读取到的cloud_data 值分别赋值给全局变量
//此days是前端js代码中的全局变量,全局变量可以用来保存数据
//全局变量保存的数据在整个代码文件运行中不会销毁
      days = cloud_data.days;    
      morningRoutineDays = cloud_data.morningRoutineDays;
      caloriesBurned = cloud_data.caloriesBurned;
      weightLost = cloud_data.weightLost;
      displayArea.innerHTML += cloud_data.failures;
      // 调用updateDisplay方法更新前端显示
      updateDisplay();
    } catch (error) {
      alert('无法读取存档文件或文件格式不正确。');
    }
}

读取系统关键服务运行状态及内存占用

注:读取并处理后端保存在服务器上json文件内的服务状态、名称、内存占用信息,然后使用js动态插入html代码方式将服务信息动态插入值前端界面显示。

// 通过post方式提交查询服务信息请求
async function refreshServices() {
    try {
// 通过fetch向后端接口发送POST请求
      const response = await fetch('https://a.cn/b/sys/', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
      });
      if (response.ok) {
      }
    } catch (error) {
    }
//----------  
// 读取后端查询服务后保存在本地的服务信息json文件
// 该变量为云存档路径,作用是用用户输入的云存档密码合成云存档路径
    const filePath = '/a/data.json';
    try {
// 通过fetch方法访问服务器存储内存信息文件
      const response = await fetch(filePath); 
// 新建1个变量为云数据,将获取到的云存储内存信息数据传给云数据
      const cloud_data = await response.json(); 
//----------
//将读取到的本地json数据存入services数组
//创建一个新的数组services,其中每个元素是一个对象,包含三个属性:name、status、memory。映射读取cloud_data中的三个属性,如果status为true,则输出normal
      const services = cloud_data.map(item => ({
        name: item.isActive ? `${item.serviceName}` : `${item.serviceName}`,
        status: item.isActive ? 'normal' : 'exception',
        memory: item.memoryUsage,
        memory_xn: item.memoryUsage_xn,
      }));
//----------  
//----------
//预先初始化前端DOM
//获取前端DOM元素
      const servicesContainer = document.getElementById('services');
      servicesContainer.innerHTML = ''; // 点击刷新后清空前端显示内容
//----------
//----------
//组合html代码,并获取services数组中的数据,将读取到的本地json数据内容插入前端显示
//遍历新生成的services数组,对每个services数据创建一个新的div元素,并设置其class为service-status。
//根据服务状态动态设置内部status-icon子元素的CSS类名,使其显示对应状态的图标样式。
      services.forEach(service => {
//创建一个新的HTML div 元素
        const element = document.createElement('div');  
//给创建的新的HTML div元素赋予类名。即<div class="service-status"></div>
        element.className = 'service-status';  /
//根据服务状态动态设置内部status-icon子元素的CSS类名,使其显示对应状态的图标样式。
        element.innerHTML = `
                  <div class="status-icon ${service.status}"></div>
                  <span>物存:${service.memory}GB</span>
                  <span>虚存:${service.memory_xn}GB</span>
                  <span>服务名:${service.name}</span>
              `;
//将以上组合的数据动态插入至前端进行显示
        servicesContainer.appendChild(element);
      });
    } catch (error) {
    }
//----------
  }

效果如下图所示:

JavaScript常用功能代码及心得-读取系统关键服务运行状态及内存占用.webp

禁用F12

<script type="text/javascript">
  //保密
  //禁止F12查看源码
  document.onkeydown = function() {
    if (window.event && window.event.keyCode == 123) {
        layer.msg("大佬,别扒了,不妨加个友链?");
        event.keyCode = 0;
        event.returnValue = false;
    }
}
</script>

复制提醒

<!-- 复制提醒开始 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert.min.css" />
<script type="text/javascript" src="https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert.min.js"></script>
<script>
    document.body.oncopy = function() {
        swal("复制成功!", "若要转载请保留原文链接,感谢支持!", "success");
    };
</script>
<!-- 复制提醒结束 -->

右键美化

<!-- 调用js -->
<script src="https://lib.baomitu.com/layer/3.1.1/layer.js"></script>
<!-- 自定义右键菜单美化 -->
<style type="text/css">
    a {text-decoration: none;}
    div.usercm{background-repeat:no-repeat;background-position:center center;background-size:cover;background-color:#fff;font-size:13px!important;width:130px;-moz-box-shadow:1px 1px 3px rgba(0,0,0,.3);box-shadow:0px 0px 15px #333;position:absolute;display:none;z-index:10000;opacity:0.9; border-radius: 8px;}
    div.usercm ul{list-style-type:none;list-style-position:outside;margin:0px;padding:0px;display:block}
    div.usercm ul li{margin:0px;padding:0px;line-height:35px;}
    div.usercm ul li a{color:#666;padding:0 15px;display:block}
    div.usercm ul li a:hover{color:#fff;background:rgba(170,222,18,0.88)}
    div.usercm ul li a i{margin-right:10px}
    a.disabled{color:#c8c8c8!important;cursor:not-allowed}
    a.disabled:hover{background-color:rgba(255,11,11,0)!important}
    div.usercm{background:#fff!important;}
</style>
<div class="usercm" style="left: 199px; top: 5px; display: none;">
    <ul>
        <li><a href="javascript:void(0);" onclick="getSelect();"><i class="fa fa-copy fa-fw"></i><span>复制</span></a></li>
		<li><a href="javascript:void(0);" onclick="openArticleInNewTab(event);"><i class="fa fa-external-link fa-fw"></i><span>新页面打开</span></a></li>
        <li><a href="javascript:void(0);" onclick="baiduSearch();"><i class="fa fa-search fa-fw"></i><span>搜索</span></a></li>
        <li style="border-bottom:1px solid gray"><a href="javascript:window.location.reload();"><i class="fa fa-refresh fa-fw"></i><span>重载网页</span></a></li>
        <li><a href="https://jianfei.hbswhsxy.cn/1707503499744"><i class="fa fa-meh-o fa-fw"></i><span>和我做邻居</span></a></li>  
        <li><a href="https://jianfei.hbswhsxy.cn/1707503111804"><i class="fa fa-pencil-square-o fa-fw"></i><span>给我留言</span></a></li>
        <li><a href="https://jianfei.hbswhsxy.cn/about"><i class="fa fa-graduation-cap"></i><span>关于我</span></a></li>
    </ul>
</div>
<script type="text/javascript">
    // 全局变量用于存储选中的文章链接
    var selectedArticleLink = '';
    (function(a) {
        a.extend({
            mouseMoveShow: function(b) {
                var d = 0,
                    c = 0,
                    h = 0,
                    k = 0,
                    e = 0,
                    f = 0;
                a(window).mousemove(function(g) {
                    d = a(window).width();
                    c = a(window).height();
                    h = g.clientX;
                    k = g.clientY;
                    e = g.pageX;
                    f = g.pageY;
                    h + a(b).width() >= d && (e = e - a(b).width() - 5);
                    k + a(b).height() >= c && (f = f - a(b).height() - 5);
                    a("html").on({
                        contextmenu: function(c) {
                            3 == c.which && a(b).css({
                                left: e,
                                top: f
                            }).show()
                        },
                        click: function() {
                            a(b).hide()
                        }
                    })
                })
            },
            disabledContextMenu: function() {
                window.oncontextmenu = function() {
                    return!1
                }
            }
        })
    })(jQuery);
    function getSelect() {
        "" == (window.getSelection? window.getSelection() : document.selection.createRange().text)? layer.msg("啊噢...你没还没选择文字呢!") : document.execCommand("Copy")
    }
    function baiduSearch() {
        var a = window.getSelection? window.getSelection() : document.selection.createRange().text;
        "" == a? layer.msg("啊噢...未选择要搜索的内容!") : window.open("https://cn.bing.com/search?q=" + a)
    }
    // 当鼠标右键点击文章标题时,获取链接并存储
    $(document).ready(function() {
        $("a[href]").on('contextmenu', function(event) {
            event.preventDefault();
            selectedArticleLink = $(this).attr('href');
            $('.usercm').css({
                left: event.pageX,
                top: event.pageY
            }).show();
        });
    });
    // 新标签页打开文章的函数
    function openArticleInNewTab(event) {
        if (selectedArticleLink) {
             window.open(selectedArticleLink, '_blank');
			 selectedArticleLink = "";
        }
		else{
		     layer.msg("啊噢...未选择要打开的文章!");
		}
    }
    $(function() {
        for (var a = navigator.userAgent, b = "Android;iPhone;SymbianOS;Windows Phone;iPad;iPod".split(";"), d =!0, c = 0; c < b.length; c++) if (0 < a.indexOf(b[c])) {
            d =!1;
            break
        }
        d && ($.mouseMoveShow(".usercm"), $.disabledContextMenu())
    });
</script>

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin

评论区