这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战
1. 解决点击空链接返回页面顶部的问题
有时候一些空链接被点击是会让网页返回到顶部,导致这些问题的原因,一般是加了一些特殊的链接,如 “#” 等;
window.onload = function() {
var as = document.getElementsByTagName("a"),
i = 0,
l = as.length,
h = "";
while (i < l) { // 遍历所有 a 链接
h = as[i].getAttribute("href");
if (h == "#" || !h) as[i].href = "JavaScript:void(0)"; // 修改 a 链接
i++;
}
};
- 对 “#” 和空链接过滤;
JavaScript:void(0),void 是一个操作符;
2. 解决 URL 传递中文参数出现乱码
不同的浏览器处理编码的方式不同。如:Chrome、IE 大多是 UTF-8 编码,FireFox 可能是 ISO-8859-1 编码。
一般将传递的参数利用 encodeURIComponent 进行 urf-8 格式的 url 编码,服务端可以再解码,就可以解决中文乱码问题了。
window.onload = function() {
var cencodeStr = encodeURIComponent("我是 Qingjs");
alert("调用 encodeURICompoent 对 ‘我是Qingjs’ 编码:" + cencodeStr + "\n" + "调用 decodeURIComponent 对解码后:" + decodeURIComponent(cencodeStr));
}
- 可以使用
encodeURI编码,在服务端用decodeURI解码;也可以使用encodeURIComponent对字符串进行 URI 组件编码,对应的解码函数为decodeURIComponent
3. 获取地址栏 URL 的参数
JavaScript 提供的
window.location.href可以获取地址栏 URL 的全部信息
window.onload = function() {
function getURLArgs(e) {
var args = "空", // 获取地址栏 URL 的参数
_args = []; // 试着在浏览器中添加参数
u = window.location.href,
s = u.indexof("?"),
i = 0,
j = 0,
o = null;
if (s != -1) {
args = u.substr(s+1).split("&");
}
e.innerHTML = "参数以逗号分隔:" + args
l = args.length;
for(; i < l; i++) {
if (args[i]) {
o = args[i].split("=");
_args[o[0]] = o[1];
}
}
console.log(_args)
return _args;
}
}
- 先计算 “?” 的位置,然后截取从 “?” 起始的所有字符,不包括 “?”;
4. 屏蔽功能键 Shift、Alt、Ctrl
浏览器的功能键与其他键组合会产生很多特殊组合效果,如复制、粘贴等
window.onload = function() {
var shieldingFunctionKeys = (function() {
document.onkeydown = function(event) {
event = event || _W.event;
if (event.shiftKey || event.altKey || event.ctrlKey) {
alert("禁止按 Shift 键、Alt 键、Ctrl 键!")
}
};
})();
};
- Shift 键:
event.shiftKey、Alt 键:event.altKey、Ctrl 键:event.ctrlKey