0%

最近博主在学习前端设计的时候,知道了很多实用的小技巧,于是决定写一篇文章总结一下。

use strict

在一些脚本中,你或许会在最前面看到单独的一行"use strict",这是严格模式的声明。
严格模式对正常的JavaScript语义做了一些更改:

  • 严格模式通过抛出错误来消除了一些原有静默错误。
  • 严格模式修复了一些导致JavaScript引擎难以执行优化的缺陷:有时候,相同的代码,严格模式可以比非严格模式下运行得更快。
  • 严格模式禁用了在ECMAScript的未来版本中可能会定义的一些语法。

JavaScript传递参数

这是一种向外部JS文件传入参数的方法。在HTML中写入

1
<script tag1="1" src="example.js"></script>

example.js中写入

1
2
3
4
var scripts = document.getElementsByTagName("script"),
script_len = scripts.length,
script = scripts[script_len - 1],
tag1 = script.getAttribute("tag1");

这样即可获取tag1的值,可以说是非常的巧妙了。

document.write

这个函数可以直接向HTML文档写入任何内容。比如,你需要根据屏幕宽度来加载不同js时,如果希望写入的内容是<script src="main.js"></script>,那么只要这样就可以了:

1
<script> if (screen.width >= 1200) document.write('<script src="main.js"><\/script>'); </script>

JavaScript的字符串可以使用单引号或双引号表示,但是由于要写入的内容里有双引号,使用document.write时应该用单引号括起来,否则需要将双引号转义为\",避免造成错误。如果有多层引号,应将最内层的引号改为HTML转义字符&quot;。而对于这里出现的/,将其改写为了\/,原因是浏览器会认为</script>是闭合标签,造成代码解析错误。
通过document.write可以实现根据不同的条件向HTML写入不同的内容,但是要注意,如果这个时候页面已经加载完毕,document.write会导致页面的内容被清空、覆盖。因此,这个方法不被推荐使用,应该通过其它方式代替。

<noscript>标签

对于某些不支持JavaScript的上古浏览器,以及对于停用了JavaScript的用户,<noscript>标签可能非常有用。

1
2
3
4
5
<noscript>
<div style="background-color: #5C5C5C; position: fixed; bottom: 50px; left: 80px; opacity: 0.95; border-radius: 15px; color: #FFFFFF;">
<p style="margin: 15px; max-width: 400px;">系统检测到您的浏览器禁用了或不支持JavaScript。为了保障您的浏览体验,请启用JavaScript或<a target="_blank" href="http://browsehappy.com" class="a" style="color: rgba(239,178,75,1)">升级浏览器</a></p>
</div>
</noscript>

<a>标签的download属性

设置<a>标签的download属性,可以在点击该链接时下载目标,即href属性指向的超链接。
该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件。例如:

1
<a href="https://www.example.com//images/2017-10/example.jpg" download="logo">

正常情况下,浏览器会将其保存为logo.jpg。

阅读全文 »

前言

博主使用的MacBook Air,256G闪存,可用空间约251G,曾经的分区表为:

(这是使用diskutil list命令输出的结果)

GUID分区表,共四个分区,分别是EFI引导分区、APFS的Mac主分区(在更新macOS 10.13之前为HFS+)、NTFS的Bootcamp分区以及Windows Recovery分区。
在最初安装Bootcamp时,考虑到Windows系统只是用来运行某些没有macOS版本或无法移植到macOS的程序(例如《红色警戒2》),Bootcamp分区的大小仅分配了35G。然而,在8月中旬昆特牌国服开启公测后,入坑的博主发现Bootcamp分区的大小似乎不够用了。

由于Bootcamp是磁盘上靠后的分区,并不能用常规操作向前扩充,吞并APFS分区的空间(DiskGenius使用计算器+手动改分区表数据似乎属于非常规操作,且面临着分区出现问题的危险),所以只能考虑备份Bootcamp分区内容,然后将其移除,并在主硬盘上重新划分Bootcamp分区。
不过,新的问题又产生了:Mac主分区的大小也很有限(毕竟是安装了Adobe全家桶、Autodesk Maya、XCode等程序的),并不足以重新划分出较大的Bootcamp分区以安装Windows。于是只得寻求其他解决方案。比较显而易见的解决方案有:

  • 换个Mac(没有了信仰灯和MagSafe)
  • 换个硬盘(MacBook Air的闪存是BGA封装的,并不能像SATA的SSD那样直接拆)
  • 装个SD卡(高性能大容量的SD卡价格感人,并且不适合NTFS文件系统)

这些都不是最优解。在综合了各方面的考虑后,最终选定了如下方案:

  • 使用移动硬盘,一个分区做Win To Go,另一个分区做Time Machine备份。其中移动硬盘选择的是西数Elements 500G。
阅读全文 »

编写C语言控制台程序时,如果使用scanf()函数作为输入,往往需要解决非法输入的问题。比如以下情况:

1
2
3
printf("输入一个0~9的整数a\n");
int a;
scanf("%d", &a);

此时可能出现如下几种典型的非法输入:

  • 123
  • 123xyz
  • xyz123

对于第一种,使用if判断a的范围是否满足要求即可。第二种和第三种则较为复杂,因为其中涉及到了字符的输入。第二种情况,scanf()会将123存入a,而xyz留在了输入缓冲区;第三种情况,scanf()不会读取任何数据,xyz123都留在了输入缓冲区。
如果只是判断这一次输入的合法性,可以利用scanf()的返回值。如果输入有效,scanf()会返回1,否则返回0。由此可以排除scanf()无法读取的输入。

阅读全文 »