onchange与onpropertychange的不同

本文详细对比了onpropertychange与onchange事件的区别,特别是在IE浏览器中使用onpropertychange来捕获HTML元素属性变化的功能。并通过示例说明了如何在特定属性变化时触发事件。
onpropertychange事件和onchange有些类似,但是也有不同!
IE下,当一个HTML元素的属性改变的时候,都能通过onpropertychange来捕获。例如一个
<input name="text1" id="text1" />
对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。
也就是说:onpropertychange能及时捕获属性值的变化,而onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件!
如:
例1:
请输入图片地址: <input type="text" name="mytext" size="10" value="" onpropertychange="document.images['myimg'].src=this.value;" /> <img id="myimg" src="/img/common/logo.gif" alt="" />
当text框中的内容被改变时,图片就会立刻被显示出来。而如果用onchange时,改变其值时还需用鼠标单击空白或其他地方使input元素失去焦点(onblur)才能激活该事件,图片显示才会被改变!

onChange:当前元素失去焦点并且元素的内容发生改变而触发的事件 [鼠标与键盘的触发均可]
所以说当对象的value被脚本改变时不会触发onChange事件,因为用户即没有动鼠标又没动键盘.

PS:firefox 不支持onpropertychange

当元素的任何属性值被改变时均会触发onpropertychange,如:失去焦点、单击输入框等;有时我们只是需要在某个属性被改变时才想要执行onpropertychange中的事件,所以此时,我们需要用JS进行判断,是否为我们需要的属性发生了改变。
示例如下:
<input type="text" value="xxx" id="xx" onclick="this.myprop='xx'">
<script type="text/javascript">
<!--
document.getElementById('xx').attachEvent('onpropertychange',function(o){
if(o.propertyName!='value')return; //不是value改变不执行下面的操作
//是value改变,则执行函数处理
});
//-->
</script>
### Hadoop RPC 工作机制 Hadoop RPC(远程过程调用)是一种允许不同节点之间相互通信的技术,主要用于分布式文件系统的操作。通过这种技术,客户端可以像本地方法一样调用服务器端的方法。 #### 建立连接 当Hadoop客户端向NameNode发起RPC请求时,首先要建立到服务端的Socket连接[^3]。这一阶段涉及到网络地址解析和服务端口定位等工作。为了提高效率并减少开销,通常会采用长连接的方式保持一段时间内的多次交互而不必每次都重新创建新的TCP链接。 #### 序列化与反序列化 数据在网络上传输之前需要被转换成字节流形式,即所谓的“序列化”。而在接收方则要执行相反的操作——把收到的数据还原回原始对象结构,这称为“反序列化”。对于Hadoop而言,其内部实现了自定义的Writables接口来支持高效的数据交换格式[^1]。 #### 请求处理流程 一旦建立了稳定可靠的通信链路之后,接下来就是实际的消息传递环节了: - 客户端发送带有参数的具体命令给目标机器上的指定程序; - 对应的服务进程接收到消息后依据协议规定解析出意图,并据此做出响应动作; - 执行完毕后再将结果封装好返回给发出指令的一方; 整个过程中还包含了错误检测、超时控制等功能以确保可靠性[^2]。 ```java // 创建代理实例用于访问远程服务 InetSocketAddress addr = new InetSocketAddress("localhost", port); MyProtocol proxy = RPC.getProxy(MyProtocol.class, MyProtocol.versionID, addr, conf); // 调用远程方法 long result = proxy.myMethod(param1,param2); ``` 上述代码展示了如何使用`RPC.getProxy()`函数获取一个能够代表远端实体的对象引用,进而可以通过它来进行跨主机边界的方法调用。 ### 解决方案针对常见问题 - **性能瓶颈** 如果发现系统吞吐量不足或者延迟过高,则可能是由于频繁地打开关闭socket造成的资源浪费所致。此时应该考虑调整配置项使得尽可能多地重用已存在的连接而不是每次都要新建断连。 - **版本不兼容** 当遇到因API变更引起的老版客户端无法正常工作的情况时,建议引入向前/向后的兼容策略,比如保留旧签名的同时增加新特性标记位以便区分不同的行为模式。 - **安全性隐患** 面对潜在的安全威胁如中间人攻击等问题,务必启用SSL/TLS加密传输通道并对所有入站流量实施严格的认证授权措施防止未授权访问发生。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值