JavaScript 客户端JavaScript之事件(DOM API 提供模块之一)
代码:
<input type="text" id="name" /> window.onload = function () {
document.getElementById("name").onkeypress = function (event) {
if (event.keyCode >115)
{
return false;
}
}
}
<form>
<%-- this代表事件发生的目标对象 --%>
<input id="b1" type="button" value="Button1" onclick="alert(this.form.b2.value);" />
<%-- this代表事件发生的目标对象,所以可以省略this --%>
<input id="b2" type="button" value="Button2" onclick="alert(form.b1.value);" />
<%--form在此匿名函数的定义域(document) 当中,所以可以省略form --%>
<input id="b3" type="button" value="Button3" onclick="alert(b4.value);" />
<%--此匿名函数的定义的作用域为window.document当中,所以可以省略document --%>
<input id="b4" type="button" value="Button4" onclick="alert(getElementById('b3').value);" />
<%--此匿名函数的定义的作用域为window.document当中,但document对象也是运行在window当中,所以可以省略window --%>
</form>
var b4 = document.getElementById("b4");
b4.onclick = function () {
with (document) {
with (this.form) {
with (this) {
alert(b3.value);
}
}
}
}
<div id="div1" style="height:100px;height:40px;border:solid 1px red;">
<input id="b1" type="button" value="Button1" />
</div>
window.onload = function () {
var b1 = document.getElementById("b1");
b1.addEventListener("click", function () {
alert("this is b1");
})
var div1 = document.getElementById("div1");
div1.addEventListener("click", function () {
alert("this is div1");
}, true)
}
function mousemoveFun(event) {
var left = event.clientX - div1.style.width.substring(0, div1.style.width.length - 2) / 2;
var top = event.clientY - div1.style.height.substring(0, div1.style.height.length - 2) / 2;
div1.style.left = left + "px";
div1.style.top = top + "px";
}
window.onload = function () {
var b1 = document.getElementById("b1");
var div1 = document.getElementById("div1");
var ismove = false;
div1.addEventListener("mousedown", function (event) {
document.addEventListener("mousemove", mousemoveFun, true);
ismove = true;
})
document.addEventListener("mouseup", function (event) {
if (!ismove) {
return;
}
ismove = false;
document.removeEventListener("mousemove", mousemoveFun, true);
var left = event.clientX - div1.style.width.substring(0, div1.style.width.length - 2) / 2;
var top = event.clientY - div1.style.height.substring(0, div1.style.height.length - 2) / 2;
div1.style.left = left + "px";
div1.style.top = top + "px";
}, true);
//注意:mousemove和mouseup事件的句柄被注册为捕捉事件句柄,因为用户移动鼠标的速度比跟跟随它移动的文档元素快,所以其中一些事件发生在
//原始目标元素外部,没有捕获,事件可能无法分配给正确的句柄
}
<input id="b1" type="button" value="Button1" />
var o = new Object();
o.value = "js对象";
o.func = function (event) {
//this引用的 o 而不是文档元素对象
alert(this.value);
}
window.onload = function () {
var b1 = document.getElementById("b1");
b1.addEventListener("click", function (event) {
o.func(event);
}, true);
}
<input id="b1" type="button" value="Button1" />
var e;
window.onload = function () {
var b1 = document.getElementById("b1");
b1.addEventListener("click", function (event) {
dataEvent.receive("b1", e, function (event) {
alert(event.datatype + ":" + event.data);
});
}, true);
var e = dataEvent.send("b1", "name", "小三");
}
var dataEvent = {};
dataEvent.send = function (target, datatype, data) {
if (typeof target == "string") {
target = document.getElementById(target);
}
if (document.createEvent) {
var e = document.createEvent("Events");//此处使用的是接口名 Events UIEvents MouseEvents MutationEvents 有可能没有s
e.initEvent("dataavailable", true, false);//初始化自定义事件
}
else if (document.createEventObject) {
var e = document.createEventObject();
}
else return;
//自定义事件的一些属性
e.datatype = datatype;
e.data = data;
return e;
}
dataEvent.receive = function (target, event, handler) {
if (typeof target == "string")
{ target = document.getElementById(target); }
if (target.addEventListener)
{ target.addEventListener("dataavailable", handler, false); }
else if (target.attachEvent) {
target.attachEvent("ondataavailable", handler);
}
if (target.dispatchEvent) {
target.dispatchEvent(event);
}
else if (target.fireEvent) {
target.fireEvent("ondataavailable", event);
}
}
JavaScript 客户端JavaScript之事件(DOM API 提供模块之一)的更多相关文章
- JavaScript 客户端JavaScript之样式表操作(DOM API 提供模块之一)
层叠样式 表和动态HTML 层叠样式表(CSS)是指定HTML文档或XML文档的表现的标准. 使用CSS和Javascript,可以创建出各种视觉效果,这些效果可以统称为动态HTML(DH ...
- JavaScript 客户端JavaScript之 Web浏览器的环境
Web浏览器实现的Javascript,通过Web浏览器实现的JavaScript引入了大量可脚本化的对象(1.Web浏览器 2.HTML 3.HTML中的内容) Web浏览器中的Javascrip ...
- JavaScript 客户端JavaScript之 脚本化文档
客户端JavaScript的存在把静态HTML转变为交互式的Web应用程序,脚本化Web页面的内容正是JavaScript存在的理由. 一个文档对象模型或者说DOM就是一个API,它定义了如何访问 ...
- JavaScript 客户端JavaScript之脚本化HTTP(通过XMLHttpRequest)
XMLHttpRequest对象的设计目的是为了处理由普通文本或XML组成的响应:但是,一个响应也可能是另外一种类型,如果用户代理(UA)支持这种内容类型的话. 大多数浏览的客户端JavaScri ...
- JavaScript 客户端JavaScript之 脚本化浏览器窗口
1.计时器 客户端Javascript以全局函数setTimeOut().clearTimeOut().setInterval().clearInterval()提供这一功能. 前者是从运行的那一 ...
- JavaScript 客户端JavaScript之cookie和客户端持久性
Document对象都有一个cookie属性,它使得JavaScript代码能够在用户的硬盘上持久地存储数据, 并且能够获取以这种方式存储的数据.客户端持久性是赋予WEB应用程序记忆力的一种简单方法. ...
- JavaScript 客户端JavaScript之Document对象中的表单和表单元素
Form对象 代表一个HTML表单(document可以有多个表单元素) 表单访问 document.form[document.forms.length-1] 访问表单元素 document.for ...
- JavaScript DOM API初步(整理)
文档对象模型 文档对象模型(Doucment Object Model,DOM)是表示文档(如HTML文档.XML文档)和访问.操作构成文档的各种元素的应用程序接口.在DOM中,HTML文档的层次结构 ...
- 前端开发【第6篇:JavaScript客户端(浏览器)】
Web浏览器中的JavaScript 客户端JavaScript时间线 1.Web浏览器创建Document对象,并且开始解析web页面,解析HTML元素和它门的文本内容后添加Element对象和Te ...
随机推荐
- SQLServer -- 递归查询树结构表
需求 查询树结构表(如菜单类型表,文件夹类型表等)中一个数据节点下所有的子节点数据 声明临时表,并写入数据如下 DECLARE @tbl TABLE ( Id INT ,ParentId INT ,N ...
- js 冒泡事件的处理
onMouseOver 和 onMouseOut事件冒泡 当事件在某一DOM元素被触发时,例如用户在某个节点上点击鼠标,事件将跟随着该节点继承的各个父节点冒泡穿过整个DOM的节点层次,直到它遇到依附有 ...
- 编写C# Windows服务,用于杀死Zsd.exe进程
最近经常在我的xp系统进程中出现Zsd.exe进程.刚开始他占用内存不是很大.但是过了一段时间就会变成几百M 机器就会变得很卡,网上说Zsd可能是病毒.所以我就想要不写一个Windows服务,让他每隔 ...
- N个元素的集合划分成互斥的两个子集的数目
前面这是寒假听马士兵老师讲的时候积累的语录.......... 1.php是水果刀,java是菜刀,刀法比较多,一年的和三年的区别很大. 2.nanicat连接mysql出现10061是服务没开启,却 ...
- Xamarin.Forms本地化多语言
Forms 右键新建文件夹 Localization 新建文件TranslateExtension.cs namespace Localization { /// <summary> // ...
- POJ 2774 最长公共子串
一定好好学SAM...模板在此: #include<iostream> #include<cstdio> #include<cmath> #include<a ...
- -_-#【Better JS Code】插入迭代值
+function() { var i = 0 var values = ['xiaoming', 'xiaohong'] var name = values[i] i++ console.log(n ...
- Eclipse无法设置NDK路径的解决方法
如果在Eclipse中设置NDK路径的时候遇到下面的情况(尼玛,我的NDK设置呢?): 可以参考百度经验解决:http://jingyan.baidu.com/article/4d58d5413000 ...
- Nginx+Keepalived主备切换(包含nginx服务停止)
原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...
- Scala 编程(二)类和对象
类,字段和方法 类是对象的蓝图.一旦定义了类,就可以用关键字new从类的蓝图里创建对象,类的定义: class ChecksumAccumulator { // class definition go ...