如果url中有特殊字符符号,可能会导致url不能被正确识别。
我们可以在传递参数前将url编码来解决这个问题。不过需要注意的是,有些字符在url中有独特的作用的(例如#表示锚点位置,&表示连接多个参数),所以JavaScript的encodeURI函数(意思是编码url)是不能编码这些有单独意义的字符的的。需要把它们也转码的话需要用encodeURIComponent函数(意思是编码url组件)。
下面直接列出一下有特殊含义的字符及其编码后的结果:
+ URL 中+号表示空格 %2B
空格 URL中的空格可以用+号或者编码 %20
/ 分隔目录和子目录 %2F
? 分隔实际的URL和参数 %3
% 指定特殊字符 %25
# 表示书签 %23
& URL 中指定的参数间的分隔符 %26
= URL 中指定参数的值 %3D
url参数中特殊字符的转义处理
在某项目中要做一个发信机制,由于客户的邮箱是腾讯企业邮箱,所以我去搜了下腾讯企业邮箱的POP、SMTP、IMAP协议的服务器、端口号等信息。
国内:
POP3协议:
pop.exmail.qq.com 端口110 (SSL的端口号是995)
SMTP协议:
smtp.exmail.qq.com 端口25 (SSL的端口号是465)
IMAP协议:
imap.exmail.qq.com 端口143 (SSL的端口号是993)
海外:
POP3协议:
hwpop.exmail.qq.com 端口110 (SSL的端口号是995)
SMTP协议:
hwsmtp.exmail.qq.com 端口25 (SSL的端口号是465)
IMAP协议:
hwimap.exmail.qq.com 端口143 (SSL的端口号是993)
腾讯企业邮箱的POP、SMTP、IMAP协议服务器信息
一直以来,JavaScript对于鼠标事件和触摸事件提供的支持都比较初级,此问题在pc端不是很明显,但是移动端的触摸手势就比较多样化了,为此我们有必要使用js库来帮助我们处理触摸事件。
Hammer.JS是一款轻量级的移动设备触摸手势库,不依赖其他js库,兼容性好(支持WP),支持常见的点击、拖动、缩放、旋转等触摸事件,也可支持多点触控。
Hammer.JS支持的六大事件:
Hammer.JS支持在pc端浏览器上用鼠标模拟触摸事件,这样我们开发时可以在pc上进行测试,极大提高了开发效率(看它官网的描述,似乎是可以在pc上模拟出全部的6种动作。不过缩放和旋转我试不出来,按下shift模拟双指操作也没反应①)。
下面是一个左右滑动的示例:
var myElement =document.querySelector("#a"); var mc = new Hammer(myElement); mc.on("swipeleft swiperight", function(ev) { if (ev.deltaTime>100) { // 判断一下延迟时间,小于100ms的不处理 if (ev.deltaX>0) { //向右滑动,展示左侧内容 // code }else if (ev.deltaX<0) { //向左滑动,展示右侧内容 // code } } console.log(ev); });
hammer.js用起来还真是费了不少劲。
首先是它有好几个可以下载的地方,但不同的地方不但有的版本号不同,有些甚至完全不生效。我现在用的是https://hammerjs.github.io/dist/hammer.min.js。也可能是其他版本改了api?
第二是注意禁用浏览器自己的选择事件和拖动事件。
举个例子,网页中的图片是可以被拖动的。当你按下鼠标并移动来模拟滑动事件时,会发现图片变成了拖拽状态,这时候就触发不了hammer.js上绑定的事件了,所以要用css禁止拖动该元素。
拖动文字可能导致文字被选中,所以也要禁止选中该元素。
一开始我没发现这个事情,当我把可以正常使用的demo的代码移植到我的项目里之后,发现不生效,这让我郁闷了好久,最后琢磨出来是这个原因。
hammer.js会给直接绑定的元素自动增加禁止拖动和选择的属性,但如果该元素有子元素,则需要我们视情况对该处理的子元素进行处理。
hammer.js的使用说明也较少,所以有时候我们要输出ev来自己查看当前事件的一些属性。
参考资料1
移动端手势库hammerJS 2.0.4官方文档翻译
① 有资料说,pinch 和rotate 默认情况下是禁用的,因为他们会使元件闭锁(这里貌似是机翻),如有需要可以通过下面的方法调用:
hammertime.get('pinch').set({ enable: true }); hammertime.get('rotate').set({ enable: true });
不过我还没用到这个,没去试验。
移动设备触摸手势库——Hammer.JS
WordPress设置网站副标题需要到后台的设置项里设置,操作起来太繁琐,于是我用php做了个设置网站副标题的接口。这个没什么技术含量,主要是熟悉下php对mysql数据库的基本操作流程。
首先是到数据库里找到网站副标题的字段:
找到之后写出用于修改它的sql语句,如下:
UPDATE wp_options SET option_value = '大好き' WHERE option_name = 'blogdescription'
接下来做一个html文件和一个php文件,用html文件给php文件发送要设置的副标题,php接到请求后执行数据库操作。
功能做好之后,把html传到网站上,并保存成书签。以后想修改修改副标题只要打开这个书签,输入文字就可以了。
Read More →
用PHP做一个设置网站副标题的接口
刚才修改一个网站,原本的网页编码是gb2312的,我使用一个编码转换器转换成utf-8时出了点问题,编码变成了这样:
<meta http-equiv="Content-Type" content="text/html"; charset=utf-8"gb2312" />
我直到修改完都没发现问题,后来同事的360浏览器上和搜狗浏览器上网页都是乱码,我才发现了这个问题。
看来chrome的容错能力也是非常强大啊。
我又感受到了谷人希的魅力
刚才同事的windows xp开机时出现问题,我过去一看,系统启动时失败,连开机画面都进不去,直接显示:
"Window NT has found only 468K of low memory,512K of low memory is required to run windows NT, You may need to upgrade you computer or run a configuration program provided by the manufacturer."
意思是说windows只找到了468K内存,但启动所需的最低内存为512K。
惊了,468K?不存在的。重启进BIOS看看,内存信息确实显示的是2G RAM啊。
之后我就到我的电脑上百度,结果又一次充分体会到用百度等于浪费时间谋财害命慢性自杀。尤其是百度知道,也有很多问这个问题的,点进去查看里面的回答,有说运行的软件太多导致内存不足的,有说要进安全模式的,有建议重装的(虽然重装确实能解决),有说把内存条换新的,还有“这情况个人建议你使用360安全卫士全面体检修复,然后再用它里边的优化加速功能优化一下,在开机启动里没必要的软件禁止开机启动就可以了”。(我想这可能需要你主子做个360 OS,不依赖win直接运行的)。这首哔————送给百度知道的各位智障。
后来换用谷歌,很快找到了正确的解决办法,竟然是修复系统引导……
修复完系统引导再重启电脑,一切正常了。知道真相的我眼泪流下来……
Read More →
开机显示Window NT has found only 468K of low memory的解决办法
saber lily和呆毛王的语音对比
JavaScript原生的document.querySelector和document.querySelectorAll方法很好用,不过依旧摆脱不了原生方法名太长的麻烦。所以我们可以封装下,如:
function $(selector) { return document.querySelector(selector) } function $$(selector) { return Array.prototype.slice.call(document.querySelectorAll(selector)) }
这里用了$、$$作为方法名,分别对document.querySelector方法和document.querySelectorAll方法进行封装。
$方法返回单个元素(第一个符合的元素),$$以数组形式返回所有符合的元素(即使符合的元素只有一个)。
这样我们就可以方便的使用封装的方法来选择DOM元素了:
$("#div .class img") $$("#div .class img")
不过如果$、$$的定义冲突了可能会出问题,所以如果页面上引用jQuery了的话,可以换个方法名。
ps:至于为什么方法名要用$和$$呢,并不是模仿jQuery,而是模仿chrome(至于chrome是不是模仿jQuery的方法名那我就不清楚了)。
chrome浏览器控制台里内置了封装好的$、$$方法,可以直接使用。(当然,如果$、$$的定义被页面上的代码覆盖了就不行了)
如图:
封装document.querySelector和document.querySelectorAll方法
说起少女映画系列,老司机们应该都不陌生,我也就不多做介绍了。
之前每期我都会打包用度盘分享的,但是老是被爆。现在直接用网上的磁力资源吧(来自琉璃神社)。想看更新的话可以去琉璃神社看~
少女映画 60部
magnet:?xt=urn:btih:BBD0EAD36FC5937AEFEE0AC68D88B0D55BA8BD14
magnet:?xt=urn:btih:XPIOVU3PYWJXV37OBLDI3CFQ2VN2RPIU
两个磁链的内容都是一样的,下不动的开个迅雷会员。
在上面的磁链之后又出了一些图包,更新在下面。
【少女映畫】Serval 藪猫(Kemono Friends)
magnet:?xt=urn:btih:58BF9E30D9D81C925224A54A605B574C4293A663
[少女映畫] 泽村·斯潘塞·英梨梨
magnet:?xt=urn:btih:02C9893293A294E1E866A0B5C3F765746D5BAC1F
[少女映畫]时崎狂三-Chinese Dress
magnet:?xt=urn:btih:76e16cdff35e503d823681cd3ef806cdb30e216f
[少女映畫]清姬(老婆!)
magnet:?xt=urn:btih:D3C2675AB89E0D8A32127B9B8D46041FFDC4755B
【少女映畫】时崎狂三 睡衣
magnet:?xt=urn:btih:9AA61F934BAF0565DFC8FC667AF4F89EA598DD2F
【少女映畫】阴阳师–青行灯
magnet:?xt=urn:btih:B0E458D7DECBB4812BABDA427A2E80669FD49DC0
[少女映畫] 阿库娅
magnet:?xt=urn:btih:05C041D497C2293929249AE3EE46D095580C041F
[少女映画]阿斯托尔福水手服
magnet:?xt=urn:btih:2387EDFE65CC133C95D53A4E5282981D3BD87A7E
【少女映畫】狐妖小红娘-涂山红红
magnet:?xt=urn:btih:1B58F95AF0D3105BAA8C372CB3233AA82A6AD932
【少女映畫】罪恶王冠-楪祈 | Inori Yuzuriha
magnet:?xt=urn:btih:2f427c215035557119ab8fae781db0a15357abe9
【少女映畫】Saber 仙鹤礼服
magnet:?xt=urn:btih:9c64d792ade8e3c1f0bf8464fbed8d88a5a45913
[少女映畫] 謎のヒロインX (Fate Grand Order)
magnet:?xt=urn:btih:60D8A91E4E487BFAC398C10686A1B0A38A22A0D6
【少女映畫】Saber 蓝色礼服
magnet:?xt=urn:btih:HGIBUT7LG27ROBTLJESLJUR6BQFTWLHK
【少女映畫】D.VA战斗服
magnet:?xt=urn:btih:3LZM52IOUGKFTY6INQW32SMVFDQFN6MS
【少女映畫】saber黑色泳装(这个磁链不对)
magnet:?xt=urn:btih:5f821dd0164f38942517d4d449e6ffa4c5e5ef
【少女映畫】saber女仆装
magnet:?xt=urn:btih:C6ZPHL3EUWLONXMCB22Y6VL3NV3Q72FF
【少女映畫】阿蒂拉Altera
magnet:?xt=urn:btih:FNIWFUKGGK76UYMTPBJLTTFLR63B6MYQ
【少女映畫】冲田总司初始
magnet:?xt=urn:btih:IGBJ5C6OZC2KNDKYAU6Q7CRPHAYNAPHV
【少女映畫】冲田总司 Souji Okita
magnet:?xt=urn:btih:FEKE7WLUBHVLXITPOFSUXYUVUD2CX2H4
【少女映畫】玛修战斗服
magnet:?xt=urn:btih:2CU7K7RM4Y4D4CR4VCKMU7YGVEN7LEOF
【少女映畫】莫德雷德常服 Mordred
magnet:?xt=urn:btih:FFIXWK76E3XB2SLX3V3F3VC2KDDJWYSJ
[少女映畫] 華城綾女 cosplay(没有黄段子的无聊世界)
magnet:?xt=urn:btih:0523e1e372eb61537a527be72e019d3f2ca3ff3b