JavaScript 跨浏览器事件处理与实用函数整理
88 浏览量
更新于2024-08-28
收藏 110KB PDF 举报
"JavaScript 经典实例日常收集整理(常用经典)"
在JavaScript编程中,经常会遇到浏览器兼容性问题,尤其是在处理事件监听、事件移除、事件默认行为阻止以及获取页面元素和视口信息等方面。以下是一些JavaScript跨浏览器的经典实例,旨在帮助开发者解决这些问题。
1. 跨浏览器添加事件
当我们需要在DOM元素上添加事件监听器时,`addEventListener` 是W3C标准的方法,但在IE浏览器中需要使用 `attachEvent`。下面的 `addEvent` 函数实现了这两种方法的兼容:
```javascript
function addEvent(obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false);
} else if (obj.attachEvent) { // IE
obj.attachEvent('on' + type, fn);
}
}
```
2. 跨浏览器移除事件
同理,移除事件监听器时,`removeEventListener` 是标准方法,而IE使用 `detachEvent`。`removeEvent` 函数实现兼容:
```javascript
function removeEvent(obj, type, fn) {
if (obj.removeEventListener) {
obj.removeEventListener(type, fn, false);
} else if (obj.detachEvent) { // 兼容IE
obj.detachEvent('on' + type, fn);
}
}
```
3. 跨浏览器阻止默认行为
阻止事件的默认行为,如点击链接跳转,可以使用 `preventDefault` 方法。但IE浏览器中需使用 `returnValue` 属性。`preDef` 函数实现兼容:
```javascript
function preDef(ev) {
var e = ev || window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
```
4. 跨浏览器获取目标对象
获取触发事件的目标元素,W3C标准下是 `event.target`,而在IE中则是 `window.event.srcElement`。`getTarget` 函数解决兼容性:
```javascript
function getTarget(ev) {
if (ev.target) { // W3C
return ev.target;
} else if (window.event.srcElement) { // IE
return window.event.srcElement;
}
}
```
5. 跨浏览器获取滚动条位置
获取页面滚动条的位置,需要考虑 `scrollTop` 和 `scrollLeft` 在不同浏览器中的实现。`getSP` 函数提供兼容性解决方案:
```javascript
function getSP() {
return {
top: document.documentElement.scrollTop || document.body.scrollTop,
left: document.documentElement.scrollLeft || document.body.scrollLeft;
};
}
```
6. 跨浏览器获取可视窗口大小
获取浏览器可视窗口的尺寸,W3C标准通过 `window.innerWidth` 和 `window.innerHeight`,IE则使用 `document.documentElement.clientWidth` 和 `document.documentElement.clientHeight`。`getWindow` 函数处理兼容性:
```javascript
function getWindow() {
if (typeof window.innerWidth === 'number') {
return {
width: window.innerWidth,
height: window.innerHeight
};
} else {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
};
}
}
```
这些经典实例为JavaScript开发者提供了在不同浏览器环境下编写兼容代码的基础,确保了代码在各种浏览器中的稳定性和一致性。在实际项目中,开发者可以根据需要灵活运用这些方法,提升代码质量。
2021-10-09 上传
2010-09-30 上传
2021-05-09 上传
点击了解资源详情
点击了解资源详情
2024-11-13 上传
2024-11-13 上传
weixin_38670065
- 粉丝: 4
- 资源: 924
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载