滚动页面到顶部和底部

  1. //滚动到顶部
  2. function scrollTop(){
  3. document.body.scrollTop = document.documentElement.scrollTop = 0;
  4. }
  5. //滚动到底部
  6. function scrollToEnd(){
  7. document.body.scrollTop = document.documentElement.scrollTop = document.body.scrollHeight;
  8. }

动态添加引用

  1. var eleScript= document.createElement("script");
  2. eleScript.type = "text/javascript";
  3. eleScript.src = "http://example2.com/getinfo.php";
  4. document.getElementsByTagName("HEAD")[0].appendChild(eleScript);

页面拼接

  1. $(function () {
  2. $.get("header.html",function (data) {
  3. $("#header").html(data);
  4. });
  5. $.get("footer.html",function (data) {
  6. $("#footer").html(data);
  7. });
  8. });

监视网页是否可见

  1. <script>
  2. var OriginTitile = document.title;
  3. var titleTime;
  4. document.addEventListener('visibilitychange', function () {
  5. if (document.hidden) {
  6. document.title = '(●—●)喔哟,崩溃啦!';
  7. clearTimeout(titleTime);
  8. } else {
  9. document.title = '(/≧▽≦/)咦!又好了!';
  10. titleTime = setTimeout(function () {
  11. document.title = OriginTitile;
  12. }, 2000);
  13. }
  14. });
  15. </script>

聊天

添加到书签,根据不同域名新建不同聊天室

  1. javascript:var eleScript= document.createElement("script");eleScript.type = "text/javascript";eleScript.src = "//topurl.cn/chat.js";document.getElementsByTagName("HEAD")[0].appendChild(eleScript);

复制

  1. <!-- 1. Define some markup -->
  2. <button class="btn">Copy</button>
  3. <script src="https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.min.js"></script>
  4. <!-- 3. Instantiate clipboard -->
  5. <script>
  6. var clipboard = new ClipboardJS('.btn', {
  7. text: function() {
  8. return 'to be or not to be';
  9. }
  10. });
  11. clipboard.on('success', function(e) {
  12. console.log(e);
  13. });
  14. clipboard.on('error', function(e) {
  15. console.log(e);
  16. });
  17. </script>

获取选中文字

  1. function getSelectText() {
  2. var txt = "";
  3. if(document.selection) {
  4. txt = document.selection.createRange().text;
  5. } else {
  6. txt = document.getSelection();
  7. //txt = window.getSelection();
  8. }
  9. return $.trim(txt.toString());
  10. }
  11. // 绑定事件
  12. $("#origin").mouseup(function (e) {
  13. var value = $.trim(getSelectText());
  14. });

正则封装

  1. // 是否匹配
  2. // 返回 true false
  3. function isMatch(patt,str) {
  4. return patt.test(str);
  5. }
  6. // 获取符合的第一个字符串
  7. // 返回string null
  8. function getFirstStr(patt, str) {
  9. var result = patt.exec(str);
  10. if(result){
  11. return result[0];
  12. }
  13. return null;
  14. }
  15. //获取所有符合规则的字符串,
  16. // 返回[]
  17. function getAllStr(patt, str) {
  18. return str.match(patt);
  19. }
  20. // 测试
  21. // var str = "The rai5n in SPAIN stays // mai6nly in the plai7n";
  22. // var patt = /ai[5-9]n/g;
  23. // console.log(isMatch(patt, str));
  24. // console.log(getFirstStr(patt, "The rai"));
  25. // console.log(getAllStr(patt, str));
  26. // 结果:
  27. // true
  28. // null
  29. // [ 'ai5n', 'ai6n', 'ai7n' ]

获取url参数

  1. //直接读取浏览器url
  2. function GetQueryString(name) {
  3. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  4. var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
  5. var context = "";
  6. if (r != null)
  7. context = r[2];
  8. reg = null;
  9. r = null;
  10. return context == null || context == "" || context == "undefined" ? "" : decodeURI(context);
  11. }
  12. // 这样调用:
  13. alert(GetQueryString("参数名1"));

日期的格式化

从后台传过来的日期数据一般都是字符串形式的,这样:’2019-09-14T16:00:00.000+0000’ 或者 1402233166999。
但是我们需要的是 2019-09-15 这样的字符串,该怎么办呢?

首先,我们要扩充日期属性函数:

  1. Date.prototype.format = function(fmt) {
  2. var o = {
  3. "M+" : this.getMonth()+1, //月份
  4. "d+" : this.getDate(), //日
  5. "h+" : this.getHours(), //小时
  6. "m+" : this.getMinutes(), //分
  7. "s+" : this.getSeconds(), //秒
  8. "q+" : Math.floor((this.getMonth()+3)/3), //季度
  9. "S" : this.getMilliseconds() //毫秒
  10. };
  11. if(/(y+)/.test(fmt)) {
  12. fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  13. }
  14. for(var k in o) {
  15. if(new RegExp("("+ k +")").test(fmt)){
  16. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  17. }
  18. }
  19. return fmt;
  20. }

然后使用:

image.png

键盘监控

ctrl + z 示例

  1. document.onkeydown = function(ev) {
  2. if (ev.key === 'z' && ev.ctrlKey) {
  3. ev.preventDefault() // 关闭浏览器快捷键
  4. alert('撤销')
  5. }
  6. }

文件下载

  1. function exportFile(fileName) {
  2. const url = baseUrl + '/download?fileName=out_' + fileName
  3. const a = document.createElement('a')
  4. a.download = 'test'
  5. a.href = url
  6. a.click()
  7. }

Textarea高度自适应

文本域高度自适应

  1. $(function () {
  2. $.fn.autoHeight = function () {
  3. function autoHeight(elem) {
  4. elem.style.height = 'auto';
  5. elem.scrollTop = 0; //防抖动
  6. elem.style.height = elem.scrollHeight + 'px';
  7. }
  8. this.each(function () {
  9. autoHeight(this);
  10. $(this).on('keyup', function () {
  11. autoHeight(this);
  12. });
  13. });
  14. }
  15. $('textarea[autoHeight]').autoHeight();
  16. });
  17. <textarea autoHeight="true" readonly="readonly" > </textarea>