分享 10个简单实用的 JS 代码技巧

news/2024/7/7 19:21:47 标签: javascript, 前端, 开发语言

代码图片生成工具:有码高清

一、滚动到页面顶部

我们可以使用 window.scrollTo() 平滑滚动到页面顶部。
在这里插入图片描述
源码:

javascript">const scrollToTop = () => {
  window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
};

二、滚动到页面底部

当然,如果知道文档的高度,也可以平滑滚动到页面底部。
在这里插入图片描述
源码:

javascript">const scrollToBottom = () => {
  window.scrollTo({
    top: document.documentElement.offsetHeight,
    left: 0,
    behavior: "smooth",
  });
};

三、将元素滚动到可见区域

有时候我们需要将元素滚动到可见区域,怎么办?使用 scrollIntoView 就足够了。
在这里插入图片描述

javascript">const smoothScroll = (element) => {
  element.scrollIntoView({
    behavior: "smooth",
  });
};

四、以全屏模式显示元素

你一定遇到过这样的场景,需要全屏播放视频,在浏览器中全屏打开页面。
在这里插入图片描述

javascript">const goToFullScreen = (element) => {
  element = element || document.body;
  if (element.requestFullscreen) {
    element.requestFullscreen();
  } else if (element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if (element.msRequestFullscreen) {
    element.msRequestFullscreen();
  } else if (element.webkitRequestFullscreen) {
    element.webkitRequestFullScreen();
  }
};

五、退出浏览器全屏状态

是的,这个和第4点一起使用,你也会有退出浏览器全屏状态的场景。
在这里插入图片描述

javascript">const goExitFullscreen = () => {
  if (document.exitFullscreen) {
    document.exitFullscreen();
  } else if (document.msExitFullscreen) {
    document.msExitFullscreen();
  } else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if (document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  }
};

六、获取数据类型

如何通过函数获取变量的数据类型?
在这里插入图片描述

javascript">const getType = (value) => {
  const match = Object.prototype.toString.call(value).match(/ (\w+)]/)
  return match[1].toLocaleLowerCase()
}

getType() // undefined
getType({}}) // object
getType([]) // array
getType(1) // number
getType('fatfish') // string
getType(true) // boolean
getType(/fatfish/) // regexp

七、停止冒泡事件

需要一种适用于所有平台的防止事件冒泡的方法。
在这里插入图片描述

javascript">const stopPropagation = (event) => {
  event = event || window.event;
  if (event.stopPropagation) {
    event.stopPropagation();
  } else {
    event.cancelBubble = true;
  }
};

八、深拷贝一个对象

如何复制深度嵌套的对象?
在这里插入图片描述

javascript">const deepCopy = (obj, hash = new WeakMap()) => {
  if (obj instanceof Date) {
    return new Date(obj);
  }
  if (obj instanceof RegExp) {
    return new RegExp(obj);
  }
  if (hash.has(obj)) {
    return hash.get(obj);
  }
  let allDesc = Object.getOwnPropertyDescriptors(obj);
  let cloneObj = Object.create(Object.getPrototypeOf(obj), allDesc);
  hash.set(obj, cloneObj);
  for (let key of Reflect.ownKeys(obj)) {
    if (obj[key] && typeof obj[key] === "object") {
      cloneObj[key] = deepCopy(obj[key], hash);
    } else {
      cloneObj[key] = obj[key];
    }
  }
  return cloneObj;
};

九、确定设备类型

我们经常需要这样做,在手机上显示 A 逻辑,在 PC 上显示 B 逻辑。基本上,设备类型是通过识别浏览器的userAgent来确定的。
在这里插入图片描述

javascript">const isMobile = () => {
  return !!navigator.userAgent.match(
    /(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symbian|Windows Phone|Phone)/i
  );
};

十、判断设备是Android还是IOS

除了区分是手机端还是PC端,很多时候我们还需要区分当前设备是Android还是IOS。
在这里插入图片描述

javascript">const isAndroid = () => {
  return /android/i.test(navigator.userAgent.toLowerCase());
};

const isIOS = () => {
  let reg = /iPhone|iPad|iPod|iOS|Macintosh/i;
  return reg.test(navigator.userAgent.toLowerCase());
};

http://www.niftyadmin.cn/n/5537382.html

相关文章

量产工具一一UI系统(四)

前言 前面我们实现了显示系统框架,输入系统框架和文字系统框架,链接: 量产工具一一显示系统(一)-CSDN博客量产工具一一输入系统(二)-CSDN博客量产工具一一文字系统(三)…

汽车免拆诊断案例 | 2021款路虎揽胜运动版车遥控及一键起动功能失效

故障现象 一辆2021款路虎揽胜运动版车,搭载AJ20-P6H3L发动机,累计行驶里程约为2.5万km。车主反映,使用智能钥匙无法解锁车门,使用机械钥匙打开车门,进入车内,发现一键起动功能也失效;根据组合…

206. 反转链表 (Swift 版本)

题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 解题 /*** Definition for singly-linked list.* public class ListNode {* public var val: Int* public var next: ListNode?* public init() { self.val 0; self.…

云计算【第一阶段(23)】Linux系统安全及应用

一、账号安全控制 1.1、账号安全基本措施 1.1.1、系统账号清理 将非登录用户的shell设为/sbin/nologin锁定长期不使用的账号删除无用的账号 1.1.1.1、实验1 用于匹配以/sbin/nologin结尾的字符串,$ 表示行的末尾。 (一般是程序用户改为nologin&…

深度学习笔记: 最详尽解释预测系统的分类指标(精确率、召回率和 F1 值)

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家! 预测系统的分类指标(精确率、召回率和 F1 值) 简介 让我们来谈谈预测系统的分类指标以及对精确率、召回…

高效前端开发:解密pnpm的存储与链接

什么是pnpm PNPM(Performant NPM)是一种快速且节省磁盘空间的包管理工具。相较于其他包管理器如NPM和Yarn,PNPM通过独特的存储机制和链接技术解决了许多常见的问题。以下是PNPM如何避免这些问题以及其关键技术的详细介绍。 特性 PNPM Store…

手动将dingtalk-sdk-java jar包打入maven本地仓库

有时候,中央镜像库不一定有自己需要的jar包,这时候我们就需要用到该方法,将jar打入maven本地仓库,然后项目中,正常使用maven的引入规则。 mvn install:install-file -Dmaven.repo.local=D:\software\maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\repo -DgroupId=ding…

VSCode中使用CMake管理

使用 CMake 配置 Visual Studio Code (VSCode) 项目是许多 C 开发者的常见需求。下面我将详细介绍在 VSCode 中使用 CMake 的步骤和最佳实践。 前提条件 安装 VSCode:如果还未安装,请先前往 VSCode 下载页面下载安装。 CMake:安装 CMake 工…