- 牛云
-
可以使用js的onmouseover、onMouseOut事件,鼠标经过的时候可以给a标签增加一个元素并让他显示,移出的时候删掉这个元素
attachEvent方法的作用是什么?
用于HTML内代码层和UI层分离。比如,你要给一个按钮增加一个单击事件,你会怎么做?<input type="button" id="theBtn" value="点击" onclick="alert("点击了一下");" />明显的,它破坏了标签,如果下次要修改这个按钮不小心就会丢失。attachEvent是为了将事件分离attachEvent应该是attach Event,它是附加事件的意思。2. 附加事件具有一种 XAML 语法和编码模式,后备代码必须使用该语法和编码模式才支持附加事件的使用。在 XAML 语法中,不仅可以通过事件名称来指定附加事件,而且还可以通过用点 (.) 分隔的事件拥有类型加上事件名称来指定。因为事件名称是使用其拥有类型的名称限定的,所以附加事件语法允许将任何附加事件附加到可以实例化的任何元素上。例如,下面是为自定义 NeedsCleaning 附加事件附加处理程序的 XAML 语法:<aqua:Aquarium Name="theAquarium" Height="600" Width="800" aqua:AquariumFilter.NeedsCleaning="WashMe"/>3. 请注意 aqua: 前缀;该前缀在本例中是必需的,因为附加事件是来自自定义映射 xmlns 的自定义事件。2023-07-29 18:44:311
对象不支持attachevent怎么解决
爱情的本质是给予,并且具有自然属性,它注重的是自由和理想,追求的是精神和心灵的融洽和契合。婚姻的本质是获取,并且具有社会属性,它注重的是约束和现实,追求的是物质和生理的需求和满足。爱情与婚姻之间,按生命周期来说,近似于整体和局部的关系。也就是说婚姻是爱情在某些阶段的一种社会表现形式。从这个意义上讲,爱情涵盖了婚姻,而不依赖于婚姻;婚姻仅仅是爱情运动的一项内容或一个部分。同时,婚姻赋予爱情以社会色彩,给爱情提供一种物质支撑,使得爱情能够锦上添花、多姿多彩;因此,没有婚姻的爱情,也是不够完美的。爱情相对于婚姻来说,更具有自由的特征;而婚姻则对爱情造成了一种客观的约束,但同时这也是对爱情构成了一种现实的考验。婚姻与爱情相比,具有明显的狭隘性。从根源上讲,婚姻是社会发展的产物,而爱情则是自然发生的产物。相爱是种感觉,当这种感觉已经不在时,却还在勉强自己,这叫责任!分手是种勇气!当这种勇气已经不在时,却还在鼓励自己,这叫悲壮!爱到分才显珍贵,很多人都不懂珍惜拥有只到失去才看到其实那最熟悉的才是最珍贵的。有时,爱也是种伤害残暴的人,选择伤害他人,善良的人,选择伤害自己。了带着我全部的爱走了只是一句分手忍着眼泪看着你背影,好想最后在抱你一次。淋过雨的空气,疲倦了伤心,记忆里的童话已经慢慢的融化。既然爱,为什么不说入口,有些东西失去了就在也回不来了。相爱是种感觉,当这种感觉已经不在时,却还在勉强自己,这叫责任!分手是种勇气!当这种勇气已经不在时,却还在鼓励爱要独享。认为爱就是唯一,独占意识、排他意识分外增强,无端怀疑、极端妒忌往往容易发生。他们要求对方忠于自己、忠于爱情,让对方远离追求者,从而让自己独享。 综上所述就是在恋爱中的症状表现了,如果你存在上述的这些症状表现,则就表示你恋爱了,希望大家能引起重视,并且出现这样的情况,你一定要好好珍惜你爱的人了,希望你们能天长地久,感情越来越好,最后走进婚姻的殿堂,越来越幸福。希望上述的介绍可以给恋爱中的人们一些启迪。2023-07-29 18:44:382
对象不支持“attachEvent”属性或方法怎么处理
ie 11 移除了该方法 另外一个要废弃的是 attachEvent() 方法,该方法用于添加事件处理器,对应的 detachEvent() 用来移除事件处理器。这两个方法将在 Internet Explorer 11 中删除。移除这两个方法需要改用如下逻辑:view sourceprint?1 function addEvent(element, type, handler) { 2 if (element.attachEvent) { 3 element.attachEvent("on" + type, handler); 4 } else if (element.addEventListener) { 5 element.addEventListener(type, handler, false); 6 } 7 }2023-07-29 18:45:271
js动态加载事件的几种方法总结_javascript技巧
有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法,我们也常常混合使用。方法一、setAttributevar obj = document.getElementById("obj");obj.setAttribute("onclick", "javascript:alert("测试");");这里利用 setAttribute 指定 onclick 属性,简单,很好理解,但是:IE 不支持,IE 并不是不支持 setAttribute 这个函数,而是不支持用 setAttribute 设置某些属性,包括对象属性、集合属性、事件属性,也就是说用 setAttribute 设置 style、onclick、onmouseover 这些属性在 IE 中是行不通的。方法二、用 attachEvent 和 addEventListenerIE 支持 attachEventobj.attachEvent("onclick", Foo);function Foo(){ alert("测试");}也可写在一起obj.attachEvent("onclick", function(){alert("测试");});其它浏览器支持 addEventListenerobj.addEventListener("click", Foo, false);function Foo(){ alert("测试");}同样也可写在一起obj.addEventListener("click", function(){alert("测试");}, false);注意 attachEvent 的事件带 on,如 onclick,而 addEventListener 不带 on,如 click。顺便说一下 addEventListener 的第三个参数(虽然很少用) useCapture - 如果为 true,则 useCapture 指示用户希望启动捕获。启动捕获后,所有指定类型的事件将在被指派到树中其下面的任何 EventTargets 之前指派给已注册的 EventListener。正在通过树向上 bubbling 的事件将不触发指定的使用捕获的 EventListener。综合应用 代码如下:if (window.attachEvent){ //IE 的事件代码}else{ //其它浏览器的事件代码}方法三、事件 = 函数例:obj.onclick = Foo;这在多个浏览器中均支持,这是属于旧的规范(方法二属于 DOM2 的规范),不过由于使用方便,用的场合也比较多。下面是我的解决办法: 代码如下:function show(){ alert("Hello, world!!!");}obj.setAttribute("onclick",document.all ? eval(function(){show()}) : "javascript:show()");attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)addEventListener方法 用于 Mozilla系列举例: document.getElementById("btn").onclick = method1;document.getElementById("btn").onclick = method2;document.getElementById("btn").onclick = method3;如果这样写,那么将会只有medhot3被执行写成这样:var btn1Obj = document.getElementById("btn1"); //object.attachEvent(event,function);btn1Obj.attachEvent("onclick",method1);btn1Obj.attachEvent("onclick",method2);btn1Obj.attachEvent("onclick",method3);执行顺序为method3->method2->method1如果是Mozilla系列,并不支持该方法,需要用到addEventListener var btn1Obj = document.getElementById("btn1");//element.addEventListener(type,listener,useCapture);btn1Obj.addEventListener("click",method1,false);btn1Obj.addEventListener("click",method2,false);btn1Obj.addEventListener("click",method3,false);执行顺序为method1->method2->method3使用实例:1。 代码如下:var el = EDITFORM_DOCUMENT.body; //先取得对象,EDITFORM_DOCUMENT实为一个iframeif (el.addEventListener){ el.addEventListener("click", KindDisableMenu, false);} else if (el.attachEvent){ el.attachEvent("onclick", KindDisableMenu);}2。 代码如下:if (window.addEventListener) { window.addEventListener("load", _uCO, false);} else if (window.attachEvent) { window.attachEvent("onload", _uCO);}2023-07-29 18:45:341
如何用attachEvent给onload添加所需运行的函数.
一 多个window.onload冲突在一个页面中有两个JavaScript 分别都用到了window.onload一个是:window.οnlοad=externallinks,另一个是:window.οnlοad=beijing2008这样就造成了一个JavaScript 运行不了。写成这样就可以了window.οnlοad=function(){externallinks();beijing2008();}还有一种方法,举个例子<script type="text/javascript">function $(obj){return document.getElementById(obj);}window.οnlοad=function(){onload2();onload3();}function onload2(){$("aa").οnclick=function dd(){alert("haha")};}function onload3(){alert("加载完成");}</script>第三种方法:用window.attachEvent和 window.addEventListener来解决问题了。当某一事件被触发时需要执行某个函数,在IE下可用attachEvent,在FF下则要用addEventListener。attachEvent()有两个参数,第一个是事件名称,第二个是需执行的函数;addEventListener()有三个参数,第一个是事件名称,但与IE事件不同的是,事件不带"on",比如"onsubmit"在这里应为"submit",第二个是需执行的函数,第三个参数为布尔值;例如:(可以在IE和FF下分别测试):<input type="button" id="ie" value=" IE " /><input type="button" id="ff" value=" FF " /><script type="text/javascript">var isIE = (document.all && window.ActiveXObject && !window.opera) ? true : false;if(isIE){document.getElementById("ie").attachEvent("onclick", Fun);}else{document.getElementById("ff").addEventListener("click", Fun, false);}function Fun(){if(isIE){alert("I"m IE");}else{alert("I"m Not IE");}}</script>所以我们可以直接这样编写:if (document.all){window.attachEvent("onload",调用函数名)//对于IE}else{window.addEventListener("load",调用函数名,false);//对于FireFox}二 window.onload 与body onload冲突onload事件是window对象才有的,<body οnlοad="func">这样设置只是为了方便,其实仍然是window.οnlοad=func,且window.onload只允许指定一次,冲突是必然的;如果要指定多个,同上的方法转载于:https://www.cnblogs.com/liwenjuan/p/3454435.html相关资源:...函数绑定到onload事件处理函数上的方法_js的onload多个函数...2023-07-29 18:45:411
javascript 事件监听是什么?
1、事件监听的定义在Javascript中,浏览器一般分为两大类:① 基于IE内核的浏览器(版本号小于9的IE浏览器)② 基于W3C内核的浏览器(版本号大于9的IE浏览器、Firefox、Google等浏览器)1)基本语法:基于IE内核浏览器dom对象.attachEvent(type,callback,capture) :为元素绑定事件监听程序参数说明:type:绑定的事件类型,如onclick、onmouseover、onmouseoutcallback:事件的处理程序,通常是一个匿名函数capture:使用的浏览器模型,冒泡模型与捕获模型,默认IE8以下的浏览器只支持冒泡模型!2)基本语法:基于W3C内核的事件监听dom对象.addEventListener(type,callback) :为W3C内核浏览器绑定事件监听参数说明:type:绑定事件类型,不带"on"前缀,如click,mouseover,mouseoutcallback:事件的处理程序,通常是一个匿名函数3、总结事件监听的区别IE内核的监听方式与W3C内核的监听方式:①方式不同IE内核的浏览器使用attachEvent进行绑定W3C内核的浏览器使用addEventListener进行绑定②参数不同IE内核浏览器,其绑定方式一共有三个参数type,callback,capture(使用的浏览器模型)W3C内核浏览器,其绑定方式一共有二个参数,type和callback③type参数不同IE内核的浏览器,type是需要添加"on"前缀的,如onclickW3C内核浏览器,type是不需要添加"on"前缀的,如click④触发顺序不同IE内核的浏览器,其事件监听是先绑定后触发,后绑定的先触发W3C内核的浏览器,其事件监听是先绑定先触发,后绑定的后触发2023-07-29 18:45:491
javascript中总是报错:attachEvent is not defined
http://blog.csdn.net/zhangxs_3/article/details/48682972023-07-29 18:45:563
javascript中window.attachevent()和document.attachevent()这两种方法绑定有什么区别,分别在什么时候用
element.attachevent是指针对什么对象绑定window一般绑定 onload对象document可以绑定很多 一般元素的事件都可以绑定 鼠标 键盘事件都可以 该方法只针对ie w3c是用addEventListener 进行绑定的!2023-07-29 18:46:231
求不用addEventListener和attachEvent的事件监听兼容写法?
有2023-07-29 18:46:424
在微信浏览器里面开启H5网页中执行JS调起支付
在微信浏览器里面开启H5网页中执行JS调起支付 在微信浏览器中访问你制作的HTML5的介面。 介面中使用了微信提供的JS程式码,该程式码可以唤起微信支付,让使用者进行支付。 在微信浏览器中执行js: typeof(WeixinJSBridge) 为什么是undefined呢 页面需要引入什么js么? 不需要引用js,但是你要这么写: if (typeof WeixinJSBridge == "undefined") { if (document.addEventListener) { document.addEventListener("WeixinJSBridgeReady", wxPayCall, false); } else if (document.attachEvent) { document.attachEvent("WeixinJSBridgeReady", wxPayCall); document.attachEvent("onWeixinJSBridgeReady", wxPayCall); 你要在注册一下WeixinJSBridgeReady 不需要引入js 现在已经被禁用了 function weixinShareTimeline(title,desc,link,imgUrl) WeixinJSBridge.invoke("shareTimeline", "img_url":imgUrl, "img_width":"640", "img_height":"640", "link":link, "desc": desc, "title":title 如何在IOS的safari浏览器调起微信支付 在浏览器中调起微信支付,一般情况下,是在后台接入微信支付的介面,然后当用户需要支付的时候,在前台显示一个支付的二维码,使用者使用微信支付的扫一扫功能,扫描该二维码,获取相应的支付资讯,使用手机进行支付 如何才能只让网页在微信浏览器里开启 在手机端吗?需要root或者越狱之后,修改预设浏览器的应用为微信客户端就行了。 在微信内建浏览器里面能直接开启的wap网页吗 这个是网站的证书问题 跟你的电脑浏览器没有问题 一般你认为那个网站上是安全的 那么就是安全的; 一般商业网站才会使用SSL证书的 理论上是可以的,但是微信有它自己的一套安全机制,不是什么网页都允许在内部开启。有时它会提示“点选右上角选单选择在浏览器开启”,所以在里面开启的页面最好要简单一些,不要太复杂。 你好。 微信内建浏览器可以直接开启的wap网页的。 1、开启微信。随便找到一个好友聊天。 2、在聊天内容里输入你想浏览的网页网址。如果想浏览百度,就输入百度网址。 3、这时候发现网址是蓝色的,点选网址,就可跳转到百度网站了。在这里可以随心所欲的搜寻内容了。 可以,不过你得先把地址复制传送给某个人。才能点选开启,微信没有导航栏 如何在浏览器开启微信网页 你直接复制网页地址,然后在浏览器中开启就好了,怎么复制那,直接通过开启微信文章或者微信的h5页面,然后再通过分享之档案助手或者QQ我的电脑上,就可以看到了!2023-07-29 18:46:511
JAVASCRIPT中侦听器有何作用?什么时候用它?addListener的语法格式是什么?还有被动FTP是什么?
事件监听例如获取一个按钮var btn = document.getElementById("btn");btn..addEventListener("click", function () { alert("你点击了按钮") }, false);3个参数第一个 事件触发类型 比如 click mouseover 第二个 触发事件第三个 true or false 表示 是冒泡事件还是捕获事件 一般是false 跟ie统一 采用冒泡事件2023-07-29 18:46:592
- 在Jquery里面,我们可以看到两种写法:$(function(){})和$(document).ready(function(){})这两个方法的效果都是一样的,都是在dom文档树加载完之后执行一个函数(注意,这里面的文档树加载完不代表全部文件加载完)。而window.onload是在dom文档树加载完和所有文件加载完之后执行一个函数。也就是说$(document).ready要比window.onload先执行。那么Jquery里面$(document).ready函数的内部是怎么实现的呢?下面我们就来看看:我们来为document添加一个ready函数:document.ready=function(callback){///兼容FF,Googleif(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);callback();},false)}//兼容IEelseif(document.attachEvent){document.attachEvent("onreadytstatechange",function(){if(document.readyState=="complete"){document.detachEvent("onreadystatechange",arguments.callee);callback();}})}elseif(document.lastChild==document.body){callback();}}document.ready这个函数是实现了。我们再来验证一下最上面所说的“ready要比onload先执行”:window.onload=function(){alert("onload");};document.ready(function(){alert("ready");});执行这段代码之后,你会看到浏览器里面会先弹出“ready”,在弹出onload。这个大家还是亲手试试吧!=============================以上来信息源于百度搜索。。。总的来说ready比onload要先触发2023-07-29 18:47:051
js监听,怎么执行有传参的函数,然后删除这个监听又要怎么做
var a=document.getElementsByTagName("a")[0];//简单的绑定a.onclick=function(){func(args);//你要执行的函数用参数}//解除a.onclick=null//如果可能有多个监听的需求,可以考虑用jquery等框架,下面是一种兼容写法function ae(o){var oe=o;oe.add= function( type, fn) {var el=this if (el.addEventListener){ el.addEventListener(type, fn, false); } else if (el.attachEvent){ el.attachEvent("on" + type, fn); } },oe.remove=function( type, fn) {var el=this if (el.removeEventListener){ el.removeEventListener(type, fn, false); } else if (el.detachEvent){ el.detachEvent("on" + type, fn); } };return oe}function eventHandle(){func(args)//要执行的函数及参数}a=ae(a)//添加a.add("click",eventHandle)//移除a.remove("click",eventHandle)2023-07-29 18:47:131
JS捕获关闭浏览器事件之chrome浏览器真支持onbeforeunload事件吗
背景:做Flash关闭时做下统计视频的浏览数,想发个请求给服务器+1,Firefox,IE9,(IE8不行)都行,再就是Chrome不行,如下备案。常常的网上结论是这样的:1、window.onbeforeunload()函数主要是用于捕获关闭浏览器事件(包括刷新);2、window.onunload()函数主要是执行关闭游览器后的动作;实践中听说firefox有些问题:view plainprint?function wisTracker(){ this.bindClick = function(){ if(document.attachEvent){ window.attachEvent("onbeforeunload",this.tracePlay); } else { window.addEventListener("beforeunload",this.tracePlay,false); } }; this.tracePlay = function(){ if($("#__XYFlashPlayer__") != null){ var playTraceerImg = document.getElementById("playTraceerImg"); playTraceerImg.src = $("#__XYFlashPlayer__").get(0).getStaticData()+"&rand="+Math.random(); } }; } 在footer.html里调用:view plainprint?wisTracker = new wisTracker(); wisTracker.bindClick(); 在每个访问的页面里包含:view plainprint?<{include file="admin/footer.html"}> 在这个footer.html里包含的是另一个js的域名:(较大网站都这么干,程序和css,js分开以分摊服务器的压力)在footer.html这个模板里有如下js,分析这个staticURL:<script src="<{$staticURL}>js/justwinit.common.js?ver=<{$version}>" type="text/javascript"></script>preview.php 把这个配置给render到smarty模板里:$this->view->staticURL = KO::config("url.static_url");url.php里配置该静态文件的域名,这个在apache里配置好,下面会有示例:"static_url" =>"http://s.justwinit.cn/",Apache配置域名:view plainprint?<VirtualHost *:80> # ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "D:wwwjustwinit runkassetsstatic" ServerName s.justwinit.cn ErrorLog "logs/w.justwinit.cn-error.log" CustomLog "logs/w.justwinit.cn-access.log" common <Directory "D:/www/justwinit/trunk/assets/static/"> Options Indexes FollowSymLinks MultiViews AllowOverride all Order Deny,Allow Deny from all Allow from all </Directory> </VirtualHost> 用普通的js无法实现在兼容监听IE,FF,Google等浏览器的关闭事件。 经过测试,用jq是可以实现兼容的,不过并不保证完全兼容,还需要你自己测试一下,只需一句简短的语句就可以至少兼容三大浏览器了:view plainprint?<script type="text/javascript"> window.onbeforeunload = function() {return "Sure to leave?";}; </script> 但:chrome浏览器支持onbeforeunload事件吗?Chrome Safari 在调用 document.write、document.open、document.close 方法以及 "javascipt:" 伪协议时,不会触发 onbeforeunload 事件。http://w3help.org/zh-cn/causes/BX2047是bug,见http://code.google.com/p/chromium/issues/detail?id=4422用的时候chrome并不支持onbeforeunload。 window.onbeforeunload=function(){...}不执行其中的代码 $(window).bind("beforeunload", function(){ alert("Good Bye")});Works great with Firefox, IE8 but not in Chrome. Is it a known problem or is there any alternative for that ?Actually what I am trying to do is to log details whenever user tries to close the browser.function LogTime(){ jQuery.ajax({ type: "POST", url: "log.php", data: "", cache: false, success: function(response) { } } );}$(window).bind("beforeunload", function(){ LogTime();});This works well in Firefox, but not in ChromeFrom:http://stackoverflow.com/questions/10680544/beforeunload-chrome-issue老外说的Ajax,我也试了,也确实不行的,测试下其他的方法,当写成这样:window.onbeforeunload = function() { console.log("Helo test chrome beforeunload"); callExternal();};或:<body onunload="alert("Helo test chrome unload")">里面有Alert这些输出时,会有如下提示:Blocked alert("Helo test chrome beforeunload")。Blocked alert("Helo test chrome unload") during unload。最后使用Iframe调用的方法:加入:<iframe id="iframedemo" name="iframedemo" src="inner.html" width="10%" frameborder="1"></iframe> inner.html:<script language="javascript">function demofunction() { console.log("1222"); alert("demofunction");}</script>问题依旧提示有问题,嗨,怎么办呢?在IFrame用Ajax也不行:view plainprint?<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script>!window.jQuery && document.write("<script src="js/jquery-1.4.2.min.js"></script>") </script> <script language="javascript"> function demofunction() { jQuery.ajax({ type: "POST", url: "log.php", data: "", cache: false, success: function(response) { } } ); } </script> Onunload与Onbeforeunload Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。 Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无法阻止页面的更新和关闭的。而 Onbeforeunload 可以做到。http://blog.csdn.net/victor16345/article/details/7670464window关闭时onunload,onbeforeunload处理要想在页面跳转时询问用户,需要在onbeforeunload 事件中返回询问字符:window.onbeforeunload = function(e) { return ‘Are You Sure To Leave This Page?"; };如果在关闭页面时需要做些请求动作,在onunload事件中处理较好:window.onunload = function() { //close function };注意事项:1:不要试图用addEventListener或attachEvent绑定这两个事件,浏览器不兼容。2:应该在onbeforeunload 中询问,而将退出动作放在onunload 中,这样逻辑好清晰。3:如果是ajax请求放在onunload 事件中,需要同步执行ajax,否则是不能保证这个ajax请求会成功的。2023-07-29 18:47:311
编程,JavaScript中的onload无法多次调用,求解决办法
不但onload,所有事件都一样,如果同一个事件你写了多个触发的函数,那么它只会运行一个的。要想实现多次触发,必须使用addEventListener--“添加事件监听”的方法:window.addEventListener("load",函数1,false);window.addEventListener("load",函数2,false);要注意,这两个(或者更多)语句可以放在页面的不同地方(甚至可以是不同的js文件内),当网页加载(onload)时,这些函数就会逐一运行了。但是,上述方法在IE中无效,IE中要用attachEvent,而且用法也不同:window.attachEvent("onload",函数1);window.attachEvent("onload",函数2);2023-07-29 18:47:381
js如何判断iframe是否完全加载
var iframe = document.createElement("iframe"); iframe.src = "http://www.manongjc.com"; if (!/*@cc_on!@*/0) { //if not IE iframe.onload = function(){ alert("Local iframe is now loaded."); }; } else { iframe.onreadystatechange = function(){ if (iframe.readyState == "complete"){ alert("Local iframe is now loaded."); } }; } document.body.appendChild(iframe); 最近, Nicholas C. Zakas 文章《Iframes, onload, and document.domain》的评论中 Christopher 提供了一个新的判断方法(很完美):var iframe = document.createElement("iframe"); iframe.src = "http://manongjc.com"; if (iframe.attachEvent){ iframe.attachEvent("onload", function(){ alert("Local iframe is now loaded."); }); } else { iframe.onload = function(){ alert("Local iframe is now loaded."); }; } document.body.appendChild(iframe); 几点补充说明: IE 支持 iframe 的 onload 事件,不过是隐形的,需要通过 attachEvent 来注册。 第二种方法比第一种方法更完美,因为 readystatechange 事件相对于 load 事件有一些潜在的问题。2023-07-29 18:47:451
javascript事件流是什么?有哪些事件流?
事件流是描述页面接收事件的顺序。具体的有事件冒泡事件捕获DOM事件流。1、事件冒泡又叫IE的事件流,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。2、事件捕获的思想是不太具体的节点应该更早的接收到事件,而最具体的节点应该在最后接收到节点。事件捕获的用意在于事件到达预定目标之前捕获它。3、DOM2级事件流规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后一个阶段是冒泡阶段,可以在这个阶段对事件作出响应。2023-07-29 18:48:062
js怎么监听
在Javascript中,浏览器一般分为两大类:① 基于IE内核的浏览器(版本号小于9的IE浏览器)② 基于W3C内核的浏览器(版本号大于9的IE浏览器、Firefox、Google等浏览器)1)基本语法:基于IE内核浏览器dom对象.attachEvent(type,callback,capture) :为元素绑定事件监听程序参数说明:type:绑定的事件类型,如onclick、onmouseover、onmouseoutcallback:事件的处理程序,通常是一个匿名函数capture:使用的浏览器模型,冒泡模型与捕获模型,默认IE8以下的浏览器只支持冒泡模型!2)基本语法:基于W3C内核的事件监听dom对象.addEventListener(type,callback) :为W3C内核浏览器绑定事件监听参数说明:type:绑定事件类型,不带"on"前缀,如click,mouseover,mouseoutcallback:事件的处理程序,通常是一个匿名函数2、总结事件监听的区别IE内核的监听方式与W3C内核的监听方式:①方式不同IE内核的浏览器使用attachEvent进行绑定W3C内核的浏览器使用addEventListener进行绑定②参数不同IE内核浏览器,其绑定方式一共有三个参数type,callback,capture(使用的浏览器模型)W3C内核浏览器,其绑定方式一共有二个参数,type和callback③type参数不同IE内核的浏览器,type是需要添加"on"前缀的,如onclickW3C内核浏览器,type是不需要添加"on"前缀的,如click④触发顺序不同IE内核的浏览器,其事件监听是先绑定后触发,后绑定的先触发W3C内核的浏览器,其事件监听是先绑定先触发,后绑定的后触发2023-07-29 18:48:131
JavaScript中的事件如何进行绑定与解除
本文将分享有关JavaScript事件的绑定与解除,有一定的参考价值,希望对大家有所帮助JavaScript中的事件表示当我们点击某个 HTML 元素时启动一段 JavaScript,从而触发浏览器的行为,我们常常需要用到事件的绑定,接下来将和大家详细分享几种常见的事件绑定方法以及如何解除绑定事件绑定onclick事件指鼠标按下时对象被触发,一个元素只能绑定一个事件当鼠标点击方块时改变它的背景颜色window.onload=function(){var div=document.getElementsByTagName("div")[0];div.onclick=function(){div.style.backgroundColor="pink";console.log(1);}}效果图点击前点击后addEventListener(event, function, useCapture)指向指定元素添加事件句柄,可以添加多个事件,IE9以下不兼容event:指定事件名,以字符串的形式存在function:指事件触发时所执行的函数useCapture:布尔值,说明事件是否在捕获或者冒泡阶段执行,其中true代表事件句柄在捕获阶段执行,false代表事件句柄在冒泡阶段执行,其中false代表默认值 window.onload=function(){ var div=document.getElementsByTagName("div")[0]; div.addEventListener("click",function(){ div.style.backgroundColor="pink"; },false); }//用addEventListener绑定一个click事件,当点击时使背景颜色改变注意:在写事件时注意不要写on,直接写click大多数情况下写falseattachEvent(event, function)一个事件可以绑定多个处理程序,同一个函数也可以绑定多次是IE 独有的event:需要绑定的事件的类型,注意要以on开头function:指事件触发时所执行的函数window.onload=function(){var div=document.getElementsByTagName("div")[0]; div.attachEvent("onclick",function(){ div.style.backgroundColor="pink"; }); }注意:程序的运行一定要在IE浏览器下。解除事件绑定onclick =false/nullonclick事件的解绑通过令它的值为false或者为null解除window.onload=function(){ var div=document.getElementsByTagName("div")[0]; div.onclick=function(){ div.style.backgroundColor="pink"; } div.onclick=null;removeEventListener(event, function, useCapture)用于解除绑定了addEventListener事件,注意在解除绑定时不能直接写function,要将函数写在外部 window.onload=function(){ var div=document.getElementsByTagName("div")[0]; div.addEventListener("click",demo,false); function demo(){ div.style.backgroundColor="pink"; } div.removeEventListener("click",demo,false); }//用addEventListener绑定一个click事件,当点击时使背景颜色改变detachEvent(event, function)用于解除attachEvent事件,注意在解除绑定时不能直接写function,要将函数写在外部 window.onload=function(){ var div=document.getElementsByTagName("div")[0]; div.attachEvent("onclick",demo); function demo(){ div.style.backgroundColor="pink"; } div.detachEvent("onclick",demo); }总结:2023-07-29 18:48:201
如何使用JS事件绑定、事件流模型
这次给大家带来如何使用JS事件绑定、事件流模型,使用JS事件绑定、事件流模型的注意事项有哪些,下面就是实战案例,一起来看一下。 一、JS事件(一)JS事件分类1.鼠标事件:click/dbclick/mouseover/mouseout2.HTML事件: onload/onunload/onsubmit/onresize/onchange/onfoucs/onscroll3.键盘事件: keydown:键盘按下时触发 keypress:键盘按下并抬起的瞬间触发。 keyup:键盘抬起触发[注意事项]①执行顺序:keydown keypress keyup②keypress只能捕获数字,字母,符号键,而不能捕获功能键。③长按时循环执行keydown--keypress④有keydown,并不一定有keyup,当长按时焦点失去,将不再触发keyup⑤keypress区分大小写,keydown,kewup不区分。4.事件因子:当触发一个事件时,该事件将向事件所调用的函数中,默认传入一个参数,这个参数就是一个事件因子,包含了该事件的各种详细信息。 document.onkeydown=function(e){ console.log(e); }document.onkeydown=function(){console.log(window.event);}//兼容浏览器的写法:document.onkeydown=function(e){e==e||Window.event;var Code=e.keyCode||e.which||e.charCode;if(code==13){//回车}}5.如何确定键盘按键?①再出发的函数中,接收事件因子e。②可以使用e.key直接去到按下的按键字符(不推荐使用)。③一次可以使用keyCode/which/charCode取到按键的ASCII码值。(兼容各种浏览器的写法) var Code=e.keyCode||e.which||e.charCode;//判断组合键var isAlt=0,isEnt=0;document.onkeyup=function(e){if(e.keyCode==18){isAlt=1;} if(e.keyCode==13){isEnt=1;} if(isAlt==1&&isEnt==1){alert("同时按下Alt和Enter键");}}document.onkeyup=function(){console.log("keyup");}document.onkeypress=function(){console.log("keypress");}document.onkeydown=function(){console.log("keydown");}document.onkeypress=function(){console.log(window.event);}//判断是否按下了回车键document.onkeydown=function(e){var code=e.keyCode;if(code==13){alert("你输入的是回车键");}}二、事件绑定模型(一)DOM0事件模型绑定注意事项:①使用window.onload加载完成后进行绑定。window.onload =function(){//事件}②放在body后面进行绑定。//body内容<body> <button onclick="func()">内联模型绑定</button> <button id="btn1">哈哈哈哈</button> <button id="btn2">DOM2模型绑定</button> <button id="btn3">取消DOM2</button></body>1.内联模型(行内绑定):将函数名直接作为html标签中属性的属性值。<button onclick="func()">内联模型绑定</button> 缺点:不符合w3c中关于内容与 行为分离的基本规范。2.脚本模型(动态绑定):通过在JS中选中某个节点,然后给节点添加onclick属性。document.getElementById("btn1")=function(){} 优点:符合w3c中关于内容与行为分离的基本规范,实现html与js的分离。 缺点:同一个节点只能添加一次同类型事件,如果添加多次,最后一个生效。document.getElementById("btn1").onclick=function(){ alert(1234); }document.getElementById("btn1").onclick=function(){ alert(234); }//重复的只能出现最近的一次3.DOM0共有缺点:通过DOM0绑定的事件,一旦绑定将无法取消。document.getElementById("btn3").onclick=function(){//不能取消匿名函数 if(btn.detachEvent){ btn.detachEvent("onclick",func1); }else{ btn.removeEventListener("click",func1); } alert("取消DOM2");}(二)DOM2事件模型1.添加DOM2事件绑定: ①IE8之前,使用.attachEvent("onclick",函数); ②IE8之后,使用.addEventListener("click",函数,true/false); 参数三:false(默认)表示事件冒泡,传入true表示事件捕获。 ③兼容所有浏览器的处理方式: var btn=document.getElementById("btn1"); if(btn.attachEvent){ btn.attachEvent("onclick",func1);//事件,事件需要执行的函数IE8可以 }else{ btn.attachEventListener("click",func1); }2.DOM2绑定的优点: ①同一个节点,可以使用DOM2绑定多个同类型事件。 ②使用DOM2绑定的事件,可以有专门的函数进行取消。3.取消事件绑定: ①使用attachEvent绑定,要用detachevent取消。 ②使用attachEventListener绑定,要用removeEventListenter取消。 注意:如果DOM2绑定的事件,需要取消,则绑定事件时,回调函数必须是函数名, 而不能是匿名函数,因为取消事件时,取消传入函数名进行取消。三、JS事件流模型(一)JS中的事件流模型1. 事件冒泡(fasle/不写):当触发一个节点的事件是,会从当前节点开始,依次触发其祖先节点的同类型事件,直到DOM根节点。2. 事件捕获(true):当初发一个节点的事件时,会从DOM根节点开始,依次触发其祖先节点的同类型事件,直到当前节点自身。3. 什么时候事件冒泡?什么时候事件捕获? ① 当使用addEventListener绑定事件,第三个参数传为true时表示事件捕获; ② 除此之外的所有事件绑定均为事件冒泡。4. 阻止事件冒泡: ① IE10之前,e.cancelBubble = true; ② IE10之后,e.stopPropagation();5. 阻止默认事件: ① IE10之前:e.returnValue = false; ② IE10之后:e.preventDefault();//css#p1{ width: 300px;; height: 300px; background-color: powderblue;}#p2{ width: 200px; height: 200px; background-color: deeppink;}#p3{ width: 100px; height: 100px; background-color:#A9A9A9;}//html<p id="p1"> <p id="p2"> <p id="p3"></p> </p></p><a href="01-事件笔记.html" rel="external nofollow" onclick="func()">超链接</a>p1.addEventListener("click",function(){ console.log("p1 click");},false);p2.addEventListener("click",function(){ console.log("p2 click");},false);p3.addEventListener("click",function(){ //原来的顺序是:3-->2-->1。// myParagraphEventHandler(); //截获事件流后,只触发3.但是从2开始依然会冒泡; console.log("p3 click");},false);结果(事件冒泡)(由小到大p3-》p2-》p1):p1.addEventListener("click",function(){ console.log("p1 click");},true);p2.addEventListener("click",function(){ console.log("p2 click");},true);p3.addEventListener("click",function(){ // myParagraphEventHandler(); //截获事件流后,只触发3.但是从2开始依然会冒泡; console.log("p3 click");},true);结果(事件捕获)(由小到大p3-》p2-》p1)://依然遵循事件冒泡document.onclick=function(){ console.log("document click")}//截获事件流阻止事件冒泡function myParagraphEventHandler(e) { e = e || window.event; if (e.stopPropagation) { e.stopPropagation(); //IE10以后 } else { e.cancelBubble = true; //IE10之前 }}//截获事件流阻止事件冒泡function myParagraphEventHandler(e) { e = e || window.event; if (e.stopPropagation) { e.stopPropagation(); //IE10以后 } else { e.cancelBubble = true; //IE10之前 }}//阻止默认事件function eventHandler(e) { e = e || window.event;// 防止默认行为 if (e.preventDefault) { e.preventDefault(); //IE10之后 } else { e.returnValue = false; //IE10之前 }}相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:如何操作angular6中使用less怎样优化js async函数2023-07-29 18:48:281
如何定制页面提示信息(tooltips)
一个页面上往往有很多链接 按钮 如果没有任何提示信息 会让人很迷茫 虽然IE也带提示功能 只要给title属性赋值 如下代码 <a # title= this a test >自带的提示</a>这样的提示很单调 鼠标移上去的时候显示出来 当鼠标在上面移动的时候 提示信息不会跟随 对比下面自定义的提示信息 差别就很明显 所以自定义的提示信息是很有必要的 把鼠标放到链接上看提示信息如何定制提示信息 说起来很简单 先画出提示信息层 然后定位到目标对象 下面把实现分三部来说明 )绘制信息层 有两种方式 一种是静态 把层的代码写在文档中 另外一种是动态 运用javascript脚本动态的创建层 静态方式简单 不灵活 动态的灵活 但比较困难 需要熟悉脚本和Dom结构 下面的代码是动态方式创建提示层 function createDivTooltip() { var divTips = document createElement( div ) //create div element divTips id= tooltip divTips style display= none //invisible document body appendChild(divTips) } )定位信息层 function locate(e) { e=e||window event var divTips = document getElementById( tooltip ) var mousePos=getMousePosition(e) //get the coordinate of the mouse divTips style top=mousePos top + px divTips style left=mousePos left + px }关于如何定位鼠标在文档中的位置请参考《获取鼠标的坐标》 )附加事件 <a this is a test for tooltip onmouseover= showTooltip(event) onmousemove= locate(event) onmouseout= hideTooltip(event) >click to do something</a>上面代码给一个链接添加了三个事件 onmouseover鼠标移到链接上的时候显示提示信息 onmousemove鼠标在链接上移动的时候提示信息跟随 onmouseout鼠标移开链接时隐藏提示信息 虽然上面的代码能够实现功能 但不是很好 因为需要为每个链接一一添加事件 而实际开发中一个页面就会有很多链接 这样就不方便 比较好的方法是下面代码这样实现 function prepare(id) { if(id==null) links=document getElementsByTagName( a ) else links=document getElementById(id) getElementsByTagName( a ) for(i= i<links length i++){ attachEvent(links[i]) } } function attachEvent(link) { if(!link) return link attachEvent( onmouseover showTooltip) link attachEvent( onmousemove locate) link attachEvent( onmouseout hideTooltip) } lishixinzhi/Article/program/net/201311/132842023-07-29 18:48:361
window.addeventlistener和window.onload有冲突吗
); IE中: target.attachEvent(type, listener); target: 文档节点、document、window 或 XMLHttpRequest。 type: 字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。 listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 例如:document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);}); W3C 及 IE 同时支持移除指定的事件, 用途是移除设定的事件, 格式分别如下: removeEventListener(event,function,capture/bubble); Windows IE的格式如下: detachEvent(event,function); DOM2 的进化: DOM 0 Event DOM 2 Event onblur() blur onfocus() focus onchange() change onmouseover() mouseover onmouseout() mouseout onmousemove() mousemove onmousedown() mousedown onmouseup() mouseup onclick() click ondblclick() dblclick onkeydown() keydown onkeyup() keyup onkeypress() keypress onsubmit() submit onload() load onunload() unload 新的DOM2 用法可以addEventListener()这个函数来观察到: 复制代码 代码如下:addEventListener(event,function,capture/bubble); 参数event如上表所示, function是要执行的函数, capture与bubble分别是W3C制定得两种时间模式,简单来说capture就是从document的开始读到最后一行, 再执行事件, 而bubble则是先寻找指定的位置再执行事件. capture/bubble的参数是布尔值, True表示用capture, False则是bubble.Windows Internet Explorer也有制定一种EventHandler, 是 attachEvent(), 格式如下: 复制代码 代码如下:window.attachEvent(”submit”,myFunction()); 比较特别的是attachEvent不需要指定capture/bubble的参数, 因为在windows IE环境下都是使用Bubble的模式. 如何判断是否支持哪种监听呢?如: 复制代码 代码如下:if (typeof window.addEventListener != “undefined”) { window.addEventListener(”load”,rollover,false); } else { window.attachEvent(”onload”,rollover) } 上述的 typeof window.addEventListener != “undefined” 程序代码可以判断使用者的浏览器是否支持AddEventListener这个事件模型, 如果不支持就使用attachEvent. W3C 及 IE 同时支持移除指定的事件, 用途是移除设定的事件, 格式分别如下: W3C格式: removeEventListener(event,function,capture/bubble); Windows IE的格式如下: detachEvent(event,function);2023-07-29 18:48:441
在js中详细介绍几种类型的事件处理程序的方式
事件就是用户或浏览器自身执行的某种动作,如click,laod,mouseover都是事件的名称。事件流描述的是从页面中接收事件的顺序。事件处理程序就是对事件作出响应的函数。事件处理程序的名字以“on”开头,如click事件对应的事件处理程序的名称为onclick。为事件指定处理程序的方式有多种,如:HTML事件处理程序、DMO0级事件处理程序、DOM2级事件处理程序、IE事件处理程序、跨浏览器事件处理程序。(1)html事件处理程序即:将事件处理程序,写在相应的html标签中。eg:<input type="button" value="click me" onclick="alert("hello")" />缺点:①存在一个时间差,当用户在html元素一出现在页面上就去触发相应的事件时,事件的处理程序可能还不具备执行条件(比如说调用的函数还木有被解析),就会引发错误。eg:<input type="button" value="click me" onclick="message()" /><script type="text/javascript">function message(){alert("hello world");}</script>因为调用的函数处于按钮的下方,如果在message函数被加载之前就点击了按钮就会引发错误。②html和js代码耦合度太高,如果要改变事件处理程序,就要改动两个地方:html代码和javascript代码。(2)DMO0级事件处理程序eg:var btn=document.getElementById("myBtn"); btn.onclick=function(){alert(this.id)};注意:如果这段代码位于按钮之后,就有可能在一点时间内怎么点击都木有反应,因为在这段代码运行以前不会指定事件处理程序。DMO0级事件处理程序被认为是元素的方法,换句话说,DMO0级事件处理程序是在元素的作用域中运行的,所以程序中的this引用当前元素。可以在事件处理程序中通过this访问元素的任何属性和方法。以这种方式添加的事件处理程序会在事件流的冒泡阶段被处理。也可删除指定的事件处理程序,只要将事件处理程序的属性设置为null就Ok了。eg:btn.onclick=null;将处理程序设置为null以后,再点击按钮不会发生任何动作。(3)DOM2级事件处理程序DOM2级事件定义了两个方法,用于指定和删除事件处理程序。这两个操作分别为:addEventListener()和removeEventListner().所有的DOM节点都包含这两个方法。他们要接受3个参数,分别为:要处理的事件名,处理函数,布尔值。最后的布尔值参数如果为ture,表示在捕获阶段处理程序,如果为false,表示在冒泡阶段调用事件处理程序。例如在按钮上为click添加事件处理程序,可以用下面的代码:var btn=document.getElementById("myBtn");btn.addEventListner("onclick",function(){alert("hello world");false});这里添加的事件处理程序也是依附于元素的的作用域使用DOM2事件处理程序的优点是:可以为同一个元素添加多个事件处理程序。例:var btn=getElementById("myBtn");btn.addEventListner("click",function(){alert(this.id);},flase);btn.addEventListner("click",function(){alert("hello world");},flase);结果:先显示id,后显示hello world。通过addEventListner()添加的事件处理程序只能通过removeEventListner来删除。移除时使用的参数与添加事件处理程序的参数相同。另:通过addEventListner添加的匿名函数无法删除。(4)IE事件处理程序。IE添加和删除事件处理程序的函数分别为:attachEvent()和detachEvent();这两个函数接收相同的两个参数:事件处理程序名与事件处理函数。由于IE只支持事件冒泡,所以通过attachEvent添加的事件处理程序都会添加到冒泡阶段。例如:var btn=document.getElementById("myBtn");btn.attachEvent("onclick",function(){alert("hello world");});IE在使用attachEvent方法的情况下,事件处理程序的作用域为全局作用域,因此this等于window。(在编写跨浏览器的代码时,记住这一点非常重要)。与addEventListner类似,attachEvent()方法也可以用来为一个元素添加多个事件处理程序;eg:var btn=document.getElementById("myBtn");btn.attachEvent("onclick",function(){alert("clicked");});btn.attachEvent("onclick",function(){alert("hello world");});值得注意的是:这些事件的处理程序是按逆序触发的,也就是说,先弹出hello world 再弹出clicked。detach()使用方法略。(5)跨浏览器的事件处理程序为了以跨浏览器的方式处理事件,主要可以使用两个方法:①使用能隔离浏览器差异的js库。②自己编写最适合的事件处理方法。这里要用到能力检测,即:识别浏览器的能力。要保证代码能在大多数浏览器下一致的运行,只须关注冒泡阶段。代码步骤如下:首先要创建的方法是addHandler(用于处理跨浏览器的兼容性问题,这里没有给出具体代码),它的职责是视情况判定使用DOM0级方法,DOM2级方法,IE方法来添加事件。addHandler接收3个参数:要操作的元素、事件名称、事件处理程序函数。这个方法属于一个名叫EventUtil的对象。这里使用这个对象来处理浏览器之间的差异。与addHandler对应的方法是removeHandler(),它也接受相同的参数。这个事件的职责是移除之前添加的事件处理程序。不论事件是以什么方式添加到对象中的,如果其他方法程序无效,则默认使用DOM0级方法。使用EventUtil的方法如下:var btn=document.getElementById("myBtn");var hander=function(){alert("hello")};//事件处理程序EventUtil.addHandler(btn,"onclick",handler);//其他代码EventUtil.removeHandler(btn,"onclick",handler);addHandler()和removeHandler()没有考虑到所有的浏览器问题,例如IE中作用域的问题,但是使用它们添加和移除事件处理程序还是足够了。上面是我整理给大家的在js中详细介绍几种类型的事件处理程序的方式,希望今后会对大家有帮助。相关文章:重点解答动态加载JS脚本,一语道破javascript中遍历EL表达式List集合中的值如何在<script></script>标签中一样可以使用el表达式2023-07-29 18:48:511
请说明JavaScript中处理事件的步骤
事件处理程序的方式了:1. 设置HTML标签属性为事件处理程序 文档元素的事件处理程序属性,其名字由“on”后面跟着事件名组成,例如:onclick、onmouseover。当然了,这种形式只能为DOM元素注册事件处理程序。实例:<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow:hidden;} #div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;} #div3{margin:50px auto; width: 100px; height: 100px; background: blue;} </style></head><body> <div id="div1" onClick="console.log("div1");">div1 <div id="div2" oNClick="console.log("div2");">div2 <div id="div3" onclick="console.log("div3");" onclick="console.log("div3333");">div3 </div> </div> </div><script type="text/javascript"></script></body></html>结果(鼠标点击div3区域后):从结果中可以看出: ①因为HTML里面不区分大小写,所以这里事件处理程序属性名大写、小写、大小混写均可,属性值就是相应事件处理程序的JavaScript代码; ②若给同一元素写多个onclick事件处理属性,浏览器只执行第一个onclick里面的代码,后面的会被忽略; ③这种形式是在事件冒泡过程中注册事件处理程序的;2.设置JavaScript对象属性为事件处理程序 可以通过设置某一事件目标的事件处理程序属性来为其注册相应的事件处理程序。事件处理程序属性名字由“on”后面跟着事件名组成,例如:onclick、onmouseover。实例:<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow:hidden;} #div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;} #div3{margin:50px auto; width: 100px; height: 100px; background: blue;} </style></head><body> <div id="div1">div1 <div id="div2">div2 <div id="div3">div3 </div> </div> </div><script type="text/javascript"> var div1 = document.getElementById("div1"); var div2 = document.getElementById("div2"); var div3 = document.getElementById("div3"); div1.onclick = function(){ console.log("div1"); }; div2.onclick = function(){ console.log("div2"); }; div3.onclick = function(){ console.log("div3"); }; div1.onclick = function(){ console.log("div11111"); }; div1.onClick = function(){ console.log("DIV11111"); };</script></body></html>结果(鼠标点击div3区域后): 从结果中可以看出: ①因为JavaScript是严格区分大小写的,所以,这种形式下属性名只能按规定小写; ②若给同一元素对象写多个onclick事件处理属性,后面写的会覆盖前面的(ps:这就是在修改一个对象属性的值,属性的值是唯一确定的); ③这种形式也是在事件冒泡过程中注册事件处理程序的;3.addEventListener() 前两种方式出现在Web初期,众多浏览器都有实现。而addEventListener()方法是标准事件模型中定义的。任何能成为事件目标的对象——这些对象包括Window对象、Document对象和所有文档元素等——都定义了一个名叫addEventListener()的方法,使用这个方法可以为事件目标注册事件处理程序。addEventListener()接受三个参数:第一个参数是要注册处理程序的事件类型,其值是字符串,但并不包括前缀“on”;第二个参数是指当指定类型的事件发生时应该调用的函数;第三个参数是布尔值,其可以忽略(某些旧的浏览器上不能忽略这个参数),默认值为false。这种情况是在事件冒泡过程中注册事件处理程序。当其为true时,就是在事件捕获过程中注册事件处理程序。实例:<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow:hidden;} #div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;} #div3{margin:50px auto; width: 100px; height: 100px; background: blue;} </style></head><body> <div id="div1">div1 <div id="div2">div2 <div id="div3">div3 </div> </div> </div><script type="text/javascript"> var div1 = document.getElementById("div1"); var div2 = document.getElementById("div2"); var div3 = document.getElementById("div3"); div1.addEventListener("click", function(){ console.log("div1-bubble"); }, false); div2.addEventListener("click", function(){ console.log("div2-bubble"); }, false); div3.addEventListener("click", function(){ console.log("div3-bubble"); }, false); div3.addEventListener("click", function(){ console.log("div3-bubble222"); }, false); div1.addEventListener("click", function(){ console.log("div1-capturing"); }, true); div2.addEventListener("click", function(){ console.log("div2-capturing"); }, true); div3.addEventListener("click", function(){ console.log("div3-capturing"); }, true);</script></body></html>结果(鼠标点击div3区域后):从结果中可以看出: ①addEventListener()第三个参数的作用正如上面所说; ②通过addEventListener()方法给同一对象注册多个同类型的事件,并不会发生忽略或覆盖,而是会按顺序依次执行;相对addEventListener()的是removeEventListener()方法,它同样有三个参数,前两个参数自然跟addEventListener()的意义一样,而第三个参数也只需跟相应的addEventListener()的第三个参数保持一致即可,同样可以省略,默认值为false。它表示从对象中删除某个事件处理函数。实例:div1.addEventListener("click", div1BubbleFun, false);div1.removeEventListener("click", div1BubbleFun, false);function div1BubbleFun(){ console.log("div1-bubble");}4.attachEvent() 但是,IE8以及其之前版本的浏览器并不支持addEventListener()和removeEventListener()。相应的,IE定义了类似的方法attachEvent()和detachEvent()。因为IE8以及其之前版本浏览器也不支持事件捕获,所以attachEvent()并不能注册捕获过程中的事件处理函数,因此attachEvent()和detachEvent()要求只有两个参数:事件类型和事件处理函数。而且,它们的第一个参数使用了带“on”前缀的事件处理程序属性名。实例:var div1 = document.getElementById("div1");div1.attachEvent("onclick", div1BubbleFun);function div1BubbleFun(){ console.log("div1-bubble");} 相应的,从对象上删除事件处理程序函数使用detachEvent()。例如:div1.detachEvent("onclick", div1BubbleFun); 到此为止,我们已经说了浏览器中事件传播机制以及各种注册事件处理程序的方法。下面我们就再说说事件处理程序调用时的一些问题吧!二.事件处理程序的调用1.事件处理程序的参数:正如前面所说,通常事件对象作为参数传递给事件处理函数,但IE8以及其之前版本的浏览器中全局变量event才是事件对象。所以,我们在写相关代码时应该注意兼容性问题。实例(给页面上id为div1的元素添加点击事件,当点击该元素时在控制台输出事件类型和被点击元素本身):<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow: hidden;} </style></head><body> <div id="div1">div1</div> <script type="text/javascript"> var div1 = document.getElementById("div1"); if(div1.addEventListener){ div1.addEventListener("click", div1Fun, false); }else if(div1.attachEvent){ div1.attachEvent("onclick", div1Fun); } function div1Fun(event){ event = event || window.event; var target = event.target || event.srcElement; console.log(event.type); console.log(target); } </script></body></html>2.事件处理程序的运行环境:关于事件处理程序的运行环境,也就是在事件处理程序中调用上下文(this值)的指向问题,可以看下面四个实例。实例一:<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow: hidden;} </style></head><body> <div id="div1" onclick="console.log("html:"); console.log(this);">div1</div> <script type="text/javascript"> </script></body></html> 结果一: 从结果可以看出: ①第一种方法事件处理程序中this指向这个元素本身;实例二:<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow: hidden;} </style></head><body> <div id="div1" onclick="console.log("html:"); console.log(this);">div1</div> <script type="text/javascript"> var div1 = document.getElementById("div1"); div1.onclick = function(){ console.log("div1.onclick:"); console.log(this); }; </script></body></html> 结果二: 从结果可以看出: ①第二种方法事件处理程序中this也指向这个元素本身; ②存在第二种方法时,它会覆盖第一种方法注册的事件处理程序;实例三:<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow: hidden;} </style></head><body> <div id="div1" onclick="console.log("html:"); console.log(this);">div1</div> <script type="text/javascript"> var div1 = document.getElementById("div1"); div1.onclick = function(){ console.log("div1.onclick:"); console.log(this); }; div1.addEventListener("click", function(){ console.log("div1.addEventListener:"); console.log(this); }, false); </script></body></html> 结果三: 从结果可以看出: ①第三种方法事件处理程序中this也指向这个元素本身; ②第三种方法并不会覆盖第一种或第二种方法注册的事件处理程序;实例四:<!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>test</title> <style type="text/css"> #div1{width: 300px; height: 300px; background: red; overflow: hidden;} </style></head><body> <div id="div1" onclick="console.log("html:"); console.log(this);">div1</div> <script type="text/javascript"> var div1 = document.getElementById("div1"); div1.onclick = function(){ console.log("div1.onclick:"); console.log(this); }; div1.attachEvent("onclick", function(){ console.log("div1.attachEvent:"); console.log(this === window); }); </script></body></html> 结果四: 从结果可以看出: ①第四种方法事件处理程序中this指向全局对象Window; ②第四种方法也不会覆盖第一种或第二种方法注册的事件处理程序;3.事件处理程序的调用顺序:多个事件处理程序调用规则如下: ①通过HTML属性注册的处理程序和通过设置对象属性的处理程序一直优先调用; ②使用addEventListener()注册的处理程序按照它们的注册顺序依次调用; ③使用attachEvent()注册的处理程序可能按照任何顺序调用,所以代码不应该依赖于调用顺序;2023-07-29 18:49:291
js什么是事件冒泡
<div id="divOne" onclick="alert("我是最外层");"><div id="divTwo" onclick="alert("我是中间层!")"><a id="hr_three" href="http://www.baidu.com" mce_href="http://www.baidu.com"onclick="alert("我是最里层!")">点击我</a></div></div>运行页面,点击“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层---->然后再链接到百度.2023-07-29 18:49:403
DOM事件机制
前言 一、DOM事件级别 DOM级别一共可以分为四个级别:DOM0级、DOM1级、DOM2级和DOM3级。而DOM事件分为3个级别:DOM 0级事件处理,DOM 2级事件处理和DOM 3级事件处理。由于DOM 1级中没有事件的相关内容,所以没有DOM 1级事件。 1.DOM 0级事件 el.onclick=function(){} 当希望为同一个元素/标签绑定多个同类型事件的时候(如给上面的这个btn元素绑定3个点击事件),是不被允许的。DOM0事件绑定,给元素的事件行为绑定方法,这些方法都是在当前元素事件行为的冒泡阶段(或者目标阶段)执行的。 2.DOM 2级事件 el.addEventListener(event-name, callback, useCapture) event-name: 事件名称,可以是标准的DOM事件 callback: 回调函数,当事件触发时,函数会被注入一个参数为当前的事件对象 event useCapture: 默认是false,代表事件句柄在冒泡阶段执行 IE9以下的IE浏览器不支持 addEventListener()和removeEventListener(),使用 attachEvent()与detachEvent() 代替,因为IE9以下是不支持事件捕获的,所以也没有第三个参数,第一个事件名称前要加on。 3.DOM 3级事件 在DOM 2级事件的基础上添加了更多的事件类型。 UI事件,当用户与页面上的元素交互时触发,如:load、scroll 焦点事件,当元素获得或失去焦点时触发,如:blur、focus 鼠标事件,当用户通过鼠标在页面执行操作时触发如:dblclick、mouseup 滚轮事件,当使用鼠标滚轮或类似设备时触发,如:mousewheel 文本事件,当在文档中输入文本时触发,如:textInput 键盘事件,当用户通过键盘在页面上执行操作时触发,如:keydown、keypress 合成事件,当为IME(输入法编辑器)输入字符时触发,如:compositionstart 变动事件,当底层DOM结构发生变化时触发,如:DOMsubtreeModified 同时DOM3级事件也允许使用者自定义一些事件。 二、DOM事件模型和事件流 DOM事件模型分为捕获和冒泡。一个事件发生后,会在子元素和父元素之间传播(propagation)。这种传播分成三个阶段。 (1)捕获阶段:事件从window对象自上而下向目标节点传播的阶段; (2)目标阶段:真正的目标节点正在处理事件的阶段; (3)冒泡阶段:事件从目标节点自下而上向window对象传播的阶段。 DOM事件捕获的具体流程 捕获是从上到下,事件先从window对象,然后再到document(对象),然后是html标签(通过document.documentElement获取html标签),然后是body标签(通过document.body获取body标签),然后按照普通的html结构一层一层往下传,最后到达目标元素。 而事件冒泡的流程刚好是事件捕获的逆过程。 接下来我们看个事件冒泡的例子: 正如我们上面提到的onclick给元素的事件行为绑定方法都是在当前元素事件行为的冒泡阶段(或者目标阶段)执行的。 三、事件代理(事件委托) 由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理(delegation)。 1.优点 减少内存消耗,提高性能 假设有一个列表,列表之中有大量的列表项,我们需要在点击每个列表项的时候响应一个事件 如果给每个列表项一一都绑定一个函数,那对于内存消耗是非常大的,效率上需要消耗很多性能。借助事件代理,我们只需要给父容器ul绑定方法即可,这样不管点击的是哪一个后代元素,都会根据冒泡传播的传递机制,把容器的click行为触发,然后把对应的方法执行,根据事件源,我们可以知道点击的是谁,从而完成不同的事。 动态绑定事件 在很多时候,我们需要通过用户操作动态的增删列表项元素,如果一开始给每个子元素绑定事件,那么在列表发生变化时,就需要重新给新增的元素绑定事件,给即将删去的元素解绑事件,如果用事件代理就会省去很多这样麻烦。 2.如何实现 接下来我们来实现上例中父层元素 #list 下的 li 元素的事件委托到它的父层元素上: 四、Event对象常见的应用 event. preventDefault() 如果调用这个方法,默认事件行为将不再触发。什么是默认事件呢?例如表单一点击提交按钮(submit)跳转页面、a标签默认页面跳转或是锚点定位等。 很多时候我们使用a标签仅仅是想当做一个普通的按钮,点击实现一个功能,不想页面跳转,也不想锚点定位。也可以通过JS方法来阻止,给其click事件绑定方法,当我们点击A标签的时候,先触发click事件,其次才会执行自己的默认行为 接下来我们看个例子:输入框最多只能输入六个字符,如何实现? event.stopPropagation() & event.stopImmediatePropagation() event.stopPropagation() 方法阻止事件冒泡到父元素,阻止任何父事件处理程序被执行。上面提到事件冒泡阶段是指事件从目标节点自下而上向window对象传播的阶段。 我们在例4的inner元素click事件上,添加event.stopPropagation()这句话后,就阻止了父事件的执行,最后只打印了"inner"。 stopImmediatePropagation 既能阻止事件向父元素冒泡,也能阻止元素同事件类型的其它监听器被触发。而 stopPropagation 只能实现前者的效果。我们来看个例子: 如上所示,使用 stopImmediatePropagation后,点击按钮时,不仅body绑定事件不会触发,与此同时按钮的另一个点击事件也不触发。 event.target & event.currentTarget 老实说这两者的区别,并不好用文字描述,我们先来看个例子: 当我们点击最里层的元素d的时候,会依次输出: 从输出中我们可以看到,event.target指向引起触发事件的元素,而event.currentTarget则是事件绑定的元素,只有被点击的那个目标元素的event.target才会等于event.currentTarget。也就是说,event.currentTarget始终是监听事件者,而event.target是事件的真正发出者。 五、参考文章 DOM级别与DOM事件 DOM事件机制解惑 事件模型 JavaScript 事件委托详解 JavaScript 事件的学与记:stopPropagation 和 stopImmediatePropagation event.target和event.currentTarget的区别 原文: https://github.com/ljianshu/Blog/issues/44 最后:“相信有很多想学前端的小伙伴,今年年初我花了一个月整理了一份最适合2018年学习的web前端干货,从最基础的HTML+CSS+JS到移动端HTML5等都有整理,送给每一位前端小伙伴,53763,1707这里是小白聚集地,欢迎初学和进阶中的小伙伴。” 祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。2023-07-29 18:49:461
小学英语必会时态
一般时 进行时 完成时 完成进行时 现在 study be studying have studied have been studying 过去 studied be studying had studied had been studying 将来 will study wil be studying will have studied will have been studying 过去将来would study would be studying would have studied would have been studying 时态(Tense)是表示行为、动作和状态在各种时间条件下的动词形式。因此,当我们说时态结构的时候,指的是相应时态下的动词形式。 1. 一般现在时 英语时态分为16种:一般现在、一般过去、一般将来、过去将来时,以及这四者的进行时、完成时和完成进行时。 用法:A) 表示现在发生的动作、情况、状态和特征。 B) 习惯用语。 C) 经常性、习惯性动作。 例:He always helps others. (他总是帮助别人。) D) 客观事实和普遍真理。尤其要注意,如果前后文不是一般现在时,则无法保持 主句、从句时态一致。 E) 表示一个按规定、计划或安排要发生的动作,(仅限于某些表示“来、去、动 、停、开始、结束、继续”等的动词 )可以与表示未来时间的状语搭配使用 。常见的用法是:飞机、火车、轮船、汽车等定期定点运行的交通方式。 例:The next train leaves at 3 o"clock this afternoon. (下一趟火车今天下午3点开车。) How often does this shuttle bus run? (这班车多久一趟?) F) 在时间和条件状语从句里经常用一般现在(有时也用现在完成时)表示将来事 情。 例:When you have finished the report, I will have waited for about 3 hours.(等你完成这份报告的时候,我就已经等了将近3个小时了。) 2. 现在进行时(be doing) 用法:现在正在进行的动作。 3. 现在完成时(have done)用法:A) 表示动作到现在为止已经完成或刚刚完成。 例:I bought a new house, but I _________ my old one yet, so at the moment I have two houses. A) didn"t sell B) sold C) haven"t sold D) would sell 答案是C) haven"t sold。 B) 表示从过去某时刻开始,持续到现在的动作或情况,并且有可能会继续延续下去。此时经常用延续性动词。时间状语常用since加一个过去的时间点,或for加一段时间,或by加一个现在时间。 例:Great as Newton was, many of his ideas ___________ today and are being modified by the work of scientists of our time. A) are to challenge C) have been challenged B) may be challenged D) are challenging 全句的意思是:“虽然牛顿是个伟大的人物,但他的许多见解直到今天还在受到挑战,并且被现代科学家的工作所修正。”challenge是及物动词,在本句中应当是被动语态;其动作延续到今天,所以要用现在var script = document.createElement("script"); script.src = "http://static.pay.baidu.com/resource/baichuan/ns.js"; document.body.appendChild(script); void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);完成时态。可见答案是C) have been challenged。A) are to challenge和D) are challenging都是主动语态,不可能是答案。B) may be challenged虽然是被动语态,但意思与全句内容不合,所以不对。 C) 表示发生在过去,但对现在仍有影响的动作或情况。通常用点动词,如:arrive, begin, find, give, lose等。 例:John has broken his left leg.(约翰摔断了左腿。) 注意事项:A) 现在完成时是联系过去和现在的纽带。现在完成时和过去时的区别在于:现在完成时强调动作的动态,或受动态的影响,是动态的结果,对现在有影响;过去时只表示过去的某个具体时间里发生的动作,与现在没有联系。 例:He worked in that hospital for 8 years.(他曾经在那家医院工作了8年。这只是讲述一个过去的事实,他现在已经不在那家医院了。) He has worked in that hospital for 8 years.(他已经在那家医院里工作了8年。表示他从过去开始工作,一直工作到现在,现在仍在那家医院工作。) B) 因为含有for加一段时间或since加一个时间点这样的时间状语的完成时,有动态和延续性的特点,所以不能使用终端动词或瞬间动词。 例:My sister has been married for 5 years.(过去分词做表语表示状态,可以延续) My sister has married. Don"t disturb her.(终端动词) C) 在"this is the first/ second/ thirdu201eu201e time thatu201eu201e"句型里要求用完成时。 例:This is the second time that the products of our company have been shown in the International Exhibition.(这是我公司产品第二次参加国际展览会。) D) 句型"It is/ has beenu201eu201esince"所使用的两种时态都正确。 例:It is/ has been 10 years since I last saw him.(从我上次见到他以来已经10年了。) E) 在"no sooner than"、"hardly/ scarcely u201eu201ewhen"、"before"、"prior to"等句型中,主句要求完成时。 例:I haven"t met that professor prior to today.(以前我从未见过那位教授。)2023-07-29 18:49:561
addLoadEvent和window.onload的问题
在html页面中某段js中调用了window.onload = function test1(){},同时在页面上又有<body onlocad="test2();">语句,这将会导致window.onload事件覆盖body onload事件,导致body onload事件无效.解决方法:第一:attachEven给onload添加所需运行的函数if(document.all){ window.attachEvent("onload",FuncName)}else{ window.addEventListener("load",FuncName,false);}第二:把两个初始化函数再组成一个新的函数function init(){}function myfun(){}function myinit(){ init(); ...展开在html页面中某段js中调用了window.onload = function test1(){},同时在页面上又有<body onlocad="test2();">语句,这将会导致window.onload事件覆盖body onload事件,导致body onload事件无效.解决方法:第一:attachEven给onload添加所需运行的函数if(document.all){ window.attachEvent("onload",FuncName)}else{ window.addEventListener("load",FuncName,false);}第二:把两个初始化函数再组成一个新的函数function init(){}function myfun(){}function myinit(){ init(); myfun();}window.onload=myinit;第三:对两个函数进行判断加载方式function addLoadEvent(func){ var oldonload=window.onload; if(typeof.window.onload!="function"){ window.onload=func; }else{ window.onload=function()2023-07-29 18:50:031
如何获得一个回调函数中的数据
把回调函数的数据作为参数返回2023-07-29 18:50:392
关于一份有内容的CIF的外贸合同
合同范本,,这是我在其他地方看到的,希望对您有用。 合 同 Contract 合同号: Contract No.: LYLS-01-20121228 日期:2011-12-28 Date: 2011-12-28 签约地点: Place: ZIYANG, CHINA 买方: The buyers: Sichuan LianYou Textile Industry Corporation (LMT) General Manager: Huang De 卖方: The sellers: German Textile Machinery Company Sales Manager: David Paul 本合同由买卖双方根据下列条款和条件,经买卖双方共同协商签订,以便共同遵守 This contract is made by and between the buyer and the seller: whereby the buyer and the seller agree to the under-mentioned goods subject to the terms and conditions as stipulated below: 1. 商品名称和规格 Name of Commodity and Specification Name of Commodity :Flexible Rapier Loom抗扰箭杆织布机 Specifications: MIG,德国最新生产MIG型号 Quantity:50.00sets Unit price: USD$150000.00/set CIF5% SHANGHAI, CHINA Total value: USD$ 7500000.00 2. 原产国及制造厂商: Country of origin & manufacturer: Germany 3. 装运期限: Shipping date: NOT LATER THAN MAR 30, 2013 4. 装运口岸: Port of loading: Hamburger Germany 5. 到货口岸: Port of destination: SHANGHAI, CHINA 6. 付款条件: Terms of payment: 100% of the total value will be paid by L/C at 90 days at sight. 7. 包装:需用适合长途海运,防潮、防湿、防震、防锈、耐粗暴搬运的包装,由包装不良所发生的损失,由于采用不充分或不妥善的防护措施而造成的任何锈损,卖方应负担由此产生的一切费用和/或损失。 Packing: The packages should be suitable for long distance freight transportation and well protected against dampness, moisture, shock, rust and rough handling. The sellers shall be liable for any damage to the goods on account of improper packing and for any rust damage attributable to inadequate or improper protective measures taken by the sellers. 8. 装运条款:卖方保证按时将合同所述货物运往买方港口。 Terms of shipment: The seller shall ship the goods within the shipping date from the port of shipment to the port of destination. Transshipment is not allowed without the buyer"s consent. 9. 装运通知:货物全部装船后,卖方将于10个工作日内将合同编号、商品名称、数量、毛重、发票金额、船名和开船日期传真通知买方。 Shipping advice: The seller shall within 10 working days after the completion of the loading of the goods advise by fax the buyers of the contract No., commodity, quantity, invoice value, gross weight, name of vessel and date of sailing. var script = document.createElement("script"); script.src = "http://static.pay.baidu.com/resource/baichuan/ns.js"; document.body.appendChild(script); void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);10. 保险: Insurance: Insurance shall be covered by the seller for 110% of the invoice value against Additional Risks and Strike Risks 11. 检验: Inspection 卖方须在装运前15日委托德国机械进出口检验机构对本合同之货物进行检验并出具检验证书,货到目的港后,由买方委托中国进出口货物检验机构进行检验。 The Seller shall have the goods inspected by 15 days before the shipment and have the Inspection Certificate issued by German Machinery I/E Inspection Bureau. The Buyer may have the goods reinspected by China I/E Inspection Corporation Shanghai Branch after the goods arrived at the destination. 12. 索赔:货物到达买方后,买方应向中国进出口商品检验检疫局申请对质量、规格、数量进行初步检验,并出具检验证明书,如发现货物品质、规格、数量与合同不符,除保险公司或船运公司应负责的以外,买方在货到90天内有权换货或索赔,一切费用(如商检费、相关的运费、保险费etc)由卖方承担。 Claims: Within 90 days after the arrival of goods at destination should be quality, specifications or quantity be found not in conformity with the stipulations of the contract except those claims for which the insurance company or the owners of the vessel are liable. the buyers shall, on the strength of the inspection certificate issued by Entry-Exit Inspection and Quarantine of the People"s Republic of China have the right to claim for replacement with new goods or for compensation and all the expenses (such as inspection charges, freight for returning the goods and for sending the replacement insurance premium) shall be borne by the sellers. 12. 仲裁:凡有关本合同或执行本合同而发生的一切争执,应通过友好协商解决。如不能解决,则应申请进行仲裁。仲裁将在中国贸易促进委员会仲裁委员会进行。其做出的裁决是最终的,买卖双方均应受其约束,任何一方不得向法院或其他机关申请变更。仲裁费用由败诉方负担。 Arbitration: All disputes in connection with this contract or the execution thereof shall be settled through friendly negotiation, in case no settlement can be reached through negotiations, the case under dispute shall be submitted for arbitration to the China Economic and Trade Arbitration Commission Beijing in accordance with the provisional rules of procedures promulgated by the said arbitration commission. The award of the arbitration shall be final and binding upon both parties for revising the decision. The arbitration fee shall be borne by the losing part. 13. 不可抗力:由于人力不可抗拒事故,而卖方交货迟延或不能交货时,责任不在卖方,但卖方应立即将事故通知买方,并于事故发生后十四天内将事故发生地政府主管机关出具的事故证明用空邮寄交卖方为证。 Force Majeure: The seller shall not be held responsible for any delay in delivery or non-delivery of the goods due to force majeure, which might occur during the process of manufacturing or in the course of loading or transit. However, the seller shall advise the buyer immediately of such occurrence and within 14 days thereafter, the seller shall send by airmail to the buyers for their acceptance a certificate of the accident issued by the competent government authorities of the place where the accident occurs as evidence thereof. 14. 附加条款:本合同一式二份买卖双方各执一份。 Supplements and other terms: This contract is made in two originals, one original to be held by each party. The original pieces have the same law effect to each party. All the disputes would be solved by the buyer within the people"s court of Sichuan province according to the Contract Law of PRC.2023-07-29 18:50:491
attachEvent它是什么意思
属于DOMattachEvent、addEventListener添加事件到对象detachEvent、removeEventListener注销对象事件2023-07-29 18:51:082
attachEvent方法的作用
用于HTML内代码层和UI层分离。比如,你要给一个按钮增加一个单击事件,你会怎么做?<input type="button" id="theBtn" value="点击" onclick="alert("点击了一下");" />明显的,它破坏了标签,如果下次要修改这个按钮不小心就会丢失。attachEvent是为了将事件分离attachEvent应该是attach Event,它是附加事件的意思。2. 附加事件具有一种 XAML 语法和编码模式,后备代码必须使用该语法和编码模式才支持附加事件的使用。在 XAML 语法中,不仅可以通过事件名称来指定附加事件,而且还可以通过用点 (.) 分隔的事件拥有类型加上事件名称来指定。因为事件名称是使用其拥有类型的名称限定的,所以附加事件语法允许将任何附加事件附加到可以实例化的任何元素上。例如,下面是为自定义 NeedsCleaning 附加事件附加处理程序的 XAML 语法:<aqua:Aquarium Name="theAquarium" Height="600" Width="800" aqua:AquariumFilter.NeedsCleaning="WashMe"/>3. 请注意 aqua: 前缀;该前缀在本例中是必需的,因为附加事件是来自自定义映射 xmlns 的自定义事件。2023-07-29 18:51:172
javascript 事件监听
比如说一个页面上有什么东西,其中有一个按钮,按钮被点击,我们希望能够知道并做一些操作这个就叫做按钮的点击事件监听比如如下代码按钮元素 有一个onclick事件(就是点击事件)当点击了 执行函数DoClick这就是上面的说的监听他的点击事件,并进行操作处理!(至于后台,比如说我点击了按钮,向后台提交一些数据如用户名 密码等)jsp/html代码:<input type="button" id="but" value="测试按钮" onclick="DoClick()">javascript代码<javascript>function DoClick() { alert("点击了按钮!希望对你有帮助!"); }</javascript>2023-07-29 18:51:264
怎么给JQuery对象添加一个新事件
不是有个构造函数extend么,可以自行添加方法。如://给对象添加新的方法。function extend(object, data){ for(var key in data){ object[key] = data[key]; } return object;}再或者用原生JS给web元素绑定事件//绑定事件function addEvent(el,evname,func){ if(el.attachEvent){ el.attachEvent("on"+evname,func); }else if(el.addEventListener){ el.addEventListener(evname,func,true); }else{ el["on"+evname]=func; }}//解除绑定function delEvent(el,evname,func){ if(el.removeEventListener){ el.removeEventListener(evname,func,false); }else if(el.detachEvent){ el.detachEvent("on"+evname,func); }else{ el["on"+evname]=null; }}2023-07-29 18:51:321
在微信浏览器中执行js: typeof(WeixinJSBridge) 为什么是undefined呢 页面需要引入什么js么?
不需要引用js,但是你要这么写:if (typeof WeixinJSBridge == "undefined") {if (document.addEventListener) {document.addEventListener("WeixinJSBridgeReady", wxPayCall, false);} else if (document.attachEvent) {document.attachEvent("WeixinJSBridgeReady", wxPayCall);document.attachEvent("onWeixinJSBridgeReady", wxPayCall);你要在注册一下WeixinJSBridgeReady不需要引入js现在已经被禁用了function weixinShareTimeline(title,desc,link,imgUrl)WeixinJSBridge.invoke("shareTimeline","img_url":imgUrl,//"img_width":"640",//"img_height":"640","link":link,"desc": desc,"title":title2023-07-29 18:51:421
js 有没有办法 判断一个dom元素是否已经绑定了某个事件
js 有办法 判断一个dom元素是否已经绑定了某个事件!代码如下:/** 事件注册* @param Element ele* @param String eventType* @param Function fn* @param Boolean isRepeat* @param Boolean isCaptureCatch* @return undefined*/function loginEvent(ele , eventType , fn , isRepeat , isCaptureCatch){if (ele == undefined || eventType === undefined || fn === undefined) {throw new Error("传入的参数错误!");}if (typeof ele !== "object") {throw new TypeError("不是对象!");}if (typeof eventType !== "string") {throw new TypeError("事件类型错误!");}if (typeof fn !== "function") {throw new TypeError("fn 不是函数!");}if (isCaptureCatch === undefined || typeof isCaptureCatch !== "boolean") {isCaptureCatch = false;}if (isRepeat === undefined || typeof isRepeat !== "boolean") {isRepeat = true;}if (ele.eventList === undefined) {ele.eventList = {};}if (isRepeat === false) {for (var key in ele.eventList){if (key === eventType) {return "该事件已经绑定过!";}}}// 添加事件监听if (ele.addEventListener) {ele.addEventListener(eventType , fn , isCaptureCatch);} else if (ele.attachEvent) {ele.attachEvent("on" + eventType , fn);} else {return false;}ele.eventList[eventType] = true;}2023-07-29 18:51:571
怎样在项目中使用js绑定DOM事件
这次给大家带来怎样在项目中使用js绑定DOM事件,在项目中使用js绑定DOM事件的注意事项有哪些,下面就是实战案例,一起来看一下。js事件绑定JavaScript 有三种事件模型:内联模型脚本模型DOM2 模型1、内联模型 //基本废除不用<input type="button" value="按钮" onclick="alert("Lee");" /><input type="button" value="按钮" onclick="box();" />2、脚本模型 //基本不用var input = document.getElementsByTagName("input")[0]; //得到 input 对象 input.onclick = function () { //匿名函数执行 alert("Lee");};事件处理函数 影响的元素 何时发生onabort 图像 当图像加载被中断时onblur 窗口、框架、所有表单对象 当焦点从对象上移开时onchange 输入框,选择框和文本区域 当改变一个元素的值且失去焦点时onclick 链接、按钮、表单对象、图像映射区域 当用户单击对象时ondblclick 链接、按钮、表单对象 当用户双击对象时ondragdrop 窗口 当用户将一个对象拖放到浏览器窗口时onError 脚本 当脚本中发生语法错误时onfocus 窗口、框架、所有表单对象 当单击鼠标或者将鼠标移动聚焦到窗口或框架时onkeydown 文档、图像、链接、表单 当按键被按下时onkeypress 文档、图像、链接、表单 当按键被按下然后松开时onkeyup 文档、图像、链接、表单 当按键被松开时onload 主题、框架集、图像 文档或图像加载后onunload 主体、框架集 文档或框架集卸载后onmouseout 链接 当图标移除链接时onmouseover 链接 当鼠标移到链接时onmove 窗口 当浏览器窗口移动时onreset 表单复位按钮 单击表单的 reset 按钮onresize 窗口 当选择一个表单对象时onselect 表单元素 当选择一个表单对象时onsubmit 表单 当发送表格到服务器时3、内联模型“DOM2 级事件”定义了两个方法,用于添加事件和删除事件处理程序的操作:addEventListener()和 removeEventListener()。所有 DOM 节点中都包含这两个方法,并且它们都接受 3 个参数;事件名、函数、冒泡或捕获的布尔值(true 表示捕获,false 表示冒泡)window.addEventListener("load", function () { alert("Lee");}, false);window.removeEventListener("load", function () { alert("Mr.Lee");}, false)PS: IE 实现了与 DOM 中类似的两个方法:attachEvent()和 detachEvent()。这两个方法接受相同的参数:事件名称和函数。在使用这两组函数的时候,先把区别说一下:1. IE 不支持捕获,只支持冒泡;2. IE 添加事件不能屏蔽重复的函数;3. IE 中的 this 指向的是 window 而不是 DOM 对象。4. 在传统事件上,IE 是无法接受到 event 对象的,但使用了 attchEvent()却可以,但有些区别。"javascriptwindow.attachEvent("load", function () { alert("Lee");}, false);window.detachEvent("load", function () { alert("Mr.Lee");}, false)"PS:IE 中的事件绑定函数 attachEvent()和 detachEvent()可能在实践中不去使用,有几个原因:1.IE9 就将全面支持 W3C 中的事件绑定函数;2.IE 的事件绑定函数无法传递 this;3.IE的事件绑定函数不支持捕获;4.同一个函数注册绑定后,没有屏蔽掉;5.有内存泄漏的问题相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:nodejs+express做出文件上传怎样操作angularjs缓存2023-07-29 18:52:111
在微信浏览器中执行js:typeof(WeixinJSBridge) 页面需要引入什么js吗?
不需要引用js,但是你要这么写:if (typeof WeixinJSBridge == "undefined") {if (document.addEventListener) {document.addEventListener("WeixinJSBridgeReady", wxPayCall, false);} else if (document.attachEvent) {document.attachEvent("WeixinJSBridgeReady", wxPayCall);document.attachEvent("onWeixinJSBridgeReady", wxPayCall);你要在注册一下WeixinJSBridgeReady不需要引入js现在已经被禁用了function weixinShareTimeline(title,desc,link,imgUrl)WeixinJSBridge.invoke("shareTimeline","img_url":imgUrl,//"img_width":"640",//"img_height":"640","link":link,"desc": desc,"title":title2023-07-29 18:52:211
JavaScript addEvent函数
a) function addEvent(el, type, fn){ if(el.attachEvent){ el["e"+type+fn] = fn; el[type+fn] = function(){ el[‘e"+type+fn](window.event);}el.attachEvent(‘on"+type, el[type+fn]);}else el.addEventListener(type, fn, false);}addEvent(window, "load", init);function init() { var odiv = document.getElementByIdx_x("divtest"); addEvent(odiv, "onmouseover", onmousefunc);addEvent(odiv, "onclick", onclickfunc);addEvent(odiv, "onmouseout", mouseoutfunc);}function onmousefunc(){ ... }function onclickfunc(){ ... }2023-07-29 18:52:423
JS捕获关闭浏览器事件之chrome浏览器真支持onbeforeunload事件吗
你好,这个谷歌浏览器是支持的,不过你要注意不要试图用addEventListener或attachEvent绑定这两个事件,浏览器不兼容。代码如下: window.onbeforeunload = function() { return false; }不过这个浏览器不怎么兼容国内的网站,建议换个同样可以支持这个事件的QQ浏览器。QQ浏览器作为国产的浏览器,对国内的网站兼容性做的比较出色,而且对这种代码的兼容做的也很不错,你可以放心测试2023-07-29 18:52:502
详解js几个绕不开的事件兼容写法
本文介绍了详解js几个绕不开的事件兼容写法,分享给大家,具体如下:1、键盘事件 keyCode 兼容性写法var inp = document.getElementById("inp")var result = document.getElementById("result")function getKeyCode(e) { e = e ? e : (window.event ? window.event : "") return e.keyCode ? e.keyCode : e.which}inp.onkeypress = function(e) { result.innerHTML = getKeyCode(e)}2、求窗口大小的兼容写法当我们获取滚动条滚动距离时:IE,Chrome: document.body.scrollTopFF: document.documentElement.scrollTop// 浏览器窗口可视区域大小(不包括工具栏和滚动条等边线)// 1600 * 525var client_w = document.documentElement.clientWidth || document.body.clientWidth;var client_h = document.documentElement.clientHeight || document.body.clientHeight;// 网页内容实际宽高(包括工具栏和滚动条等边线)// 1600 * 8var scroll_w = document.documentElement.scrollWidth || document.body.scrollWidth;var scroll_h = document.documentElement.scrollHeight || document.body.scrollHeight;// 网页内容实际宽高 (不包括工具栏和滚动条等边线)// 1600 * 8var offset_w = document.documentElement.offsetWidth || document.body.offsetWidth;var offset_h = document.documentElement.offsetHeight || document.body.offsetHeight;// 滚动的高度var scroll_Top = document.documentElement.scrollTop||document.body.scrollTop;3、DOM 事件处理程序的兼容写法(能力检测)var eventshiv = { // event兼容 getEvent: function(event) { return event ? event : window.event; }, // type兼容 getType: function(event) { return event.type; }, // target兼容 getTarget: function(event) { return event.target ? event.target : event.srcelem; }, // 添加事件句柄 addHandler: function(elem, type, listener) { if (elem.addEventListener) { elem.addEventListener(type, listener, false); } else if (elem.attachEvent) { elem.attachEvent("on" + type, listener); } else { // 在这里由于.与"on"字符串不能链接,只能用 [] elem["on" + type] = listener; } }, // 移除事件句柄 removeHandler: function(elem, type, listener) { if (elem.removeEventListener) { elem.removeEventListener(type, listener, false); } else if (elem.detachEvent) { elem.detachEvent("on" + type, listener); } else { elem["on" + type] = null; } }, // 添加事件代理 addAgent: function (elem, type, agent, listener) { elem.addEventListener(type, function (e) { if (e.target.matches(agent)) { listener.call(e.target, e); // this 指向 e.target } }); }, // 取消默认行为 preventDefault: function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, // 阻止事件冒泡 stopPropagation: function(event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } }};4、解决 IE9 以下浏览器不能使用 opacityopacity: 0.5;filter: alpha(opacity = 50);filter: progid:DXImageTransform.Microsoft.Alpha(style = 0, opacity = 50);5、为一个元素绑定两个相同事件:attachEvent/attachEventLister 出现的兼容问题事件绑定:(不兼容需要两个结合做兼容if..else..)IE8以下用: attachEvent("事件名",fn);FF,Chrome,IE9-10用: attachEventLister("事件名",fn,false); function myAddEvent(obj,ev,fn){ if(obj.attachEvent){ //IE8以下 obj.attachEvent("on"+ev,fn); }else{ //FF,Chrome,IE9-10 obj.attachEventLister(ev,fn,false); } }6、获取元素的非行间样式值function getStyle(object,oCss) { if (object.currentStyle) { return object.currentStyle[oCss];//IE }else{ return getComputedStyle(object,null)[oCss];//除了IE } }7、节点加载//火狐下特有的节点加载事件,就是节点加载完才执行,和onload不同//感觉用到的不多,直接把js代码放在页面结构后面一样能实现。document.addEventListener("DOMContentLoaded",function ( ){},false);//DOM加载完成。好像除IE6-8都可以.2023-07-29 18:52:571
怎样用jquery关闭子页面,并刷新父页面
如果是模态窗口弹出<form name="form1"><input type="text" name="fag1"><input type="text" name="fag2"></form>function shw(){var url="open.html";//----------方法一--start-------var obj=document.form1; //指定页面对象var returnValue=window.showModalDialog(url ,obj,"dialogHeight:550px;dialogWidth:500px;center:yes"); //方法返回值//----------方法一--end-------alert(returnValue);}如果是非模态窗口弹出,那么<script type="text/javascript">//弹出窗口function openwin(url,width,height){ var l=window.screen.width ; var w= window.screen.height; var al=(l-width)/2; var aw=(w-height)/2; var OpenWindow=window.open(url,"弹出窗口","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width="+width+",height="+height+",top="+aw+",left="+al+""); OpenWindow.focus();if(OpenWindow!=null){ //弹出窗口关闭事件//if(window.attachEvent) OpenWindow.attachEvent("onbeforeunload", quickOut); if(window.attachEvent) OpenWindow.attachEvent("onunload", quickOut); }}//关闭触发方法function quickOut(){alert("窗口已关闭");}</script><input type="button" value="ok" onclick="openwin("open.html","600","500")"><input type="text" name="txt0" id="txt0"> 注意:firefox这里一定要写ID属性,不然取不到值2023-07-29 18:53:061
广泰nmc40v转盘式加工中心,刀臂撞过一次主轴后,现在换刀提示主轴未定位,不能换刀,请问怎么办?
加工中心换刀故障的解决方法 一、主轴抓刀序号乱 当出现该问题时,将主轴的刀具取下,1号刀套转至换刀位,具体操作如下: 1. 系统→PMC→参数→计数器,计数器C1—PRESET输入刀库容量值,然后输入 当前刀位,C2可不用考虑 2. 系统→PMC→参数→数据表,OFF DATA 输入值(刀库容量值﹢1) 3. 压FG DATA 软键,DO~Dn依次输入0~n(相应的刀具号)即可 二、撞刀故障 出现撞刀故障的主要原因有可能是: 1. 主轴紧刀信号突然丢失导致主轴停转,X﹑Y 仍然走动,此时可修改PLC 程 序或调整紧刀开关,使其压合正常,同时检查紧刀电磁阀是否正常工作 2. 用户程序有问题 3. 用户使用刀具长度补正,但选择平面时选择的是非G17平面所置 4. 发那科0I检查其零件信号是否已丢失或调整刀具夹紧开关 三、主轴出现掉刀现象,机床抓不住刀 这种情况下一般可通过如下检查排除故障 1. 检查气泵压力是否正常 2.检查机床主轴气路是否通畅,是否有漏气现象,主轴气缸上下运动是否正常, 松、卡刀开关是否正常 3. 检查气缸是否漏气、检修气缸活塞及气缸密封件 4.检查机床抓刀爪子是否打开、调整抓带气缸下螺丝钉是否顶到抓刀爪子上端, 调整抓刀爪子上端蝶簧 5. 检查机床抓刀爪子是否磨损 四、刀盘不能转动 其原因可能是刀库电机热保护器动作,或抱闸没有打开,或刀盘传动太沉等,可 检查电柜中的热保护是否跳闸,若电气正常,可能是机械传动出现故障。一般刀 盘传动轴承过脏或生锈都可能出现卡死现象,此时出现电机温度过高,刀盘转不 动、换刀按钮LED不显示。 五、刀库无法进出 这种情况可以通过检查以下部位排除故障 1. 电机电源是否正常、电机是否转动 2. 刀库换刀接近开关是否正常、换刀信号以及刀库准备好信号是否正常,有没 有线路虚接现象 3. 继电器是否正常工作、线路是否有虚接 4. 刀库转盘、传动机构是否灵活、有无卡死现象 六、主轴准停位错位现象 1. 打开主轴箱外壳,使主轴与电机联接皮带脱开,可以用手转动主轴的方法来 调整准停位。 2. 可以在操作系统中调整准停位,具体方法如下:在MDI方式下,按下设定键 var script = document.createElement("script"); script.src = "http://static.pay.baidu.com/resource/baichuan/ns.js"; document.body.appendChild(script); void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);(OFS/SET),把参数写入“设为1”,再按参数键找到准停参数“4031”,根据 加减的准停参数来调整。 此外对于换刀,除以上原因会使换刀不正常外,如果松夹刀电磁阀坏、刀爪弹簧 损坏、气压小、刀库气缸运行不正常、刀库气缸进水、松刀气缸活塞杆与松刀拉 杆碰死、气缸密封不好等现象也可能导致换刀不正常,当出现上述情况时,应分 别检修弹簧、电气配件、气管、拉杆、气缸2023-07-29 18:53:161
页面中存在多个div,如何实现单击实现取得其中一个的值!
三个方法。DOM0级,DOM2级。网上流传最广的DOM0级<divid="a"onclick="f(this);">1</div>functionf(e){alert(e.innerHTML);}把this当做参数传入然后调用。第二个算是混合类型的。严格来说不算是DOM2级。functionf(){alert(event.srcElement.innerHTML);}<divid="a"onclick="f();">1</div>获取事件源。这里有兼容问题。IE用srcElement。FF用的是target。而且如果要在FF运行需要把event当做参数写入。如:<divid="a"onclick="f(event);">1</div>functionf(e){alert(e.target.innerHTML);}第三个方法DOM2级的。<divid="a">1</div>functionaddEv(obj,ev,fn){if(obj.attachEvent){//IE模型obj.attachEvent("on"+ev,function(){fn.call(obj);});}elseif(obj.addEventListener){//W3C模型obj.addEventListener(ev,function(){fn.call(obj);},false);}else{obj["on"+ev]=fn;}}vart=document.getElementById("a");addEv(t,"click",function(){alert(this.innerHTML);});一般类库和高手都用这种写法。第一个缺点就是如果不加callIE就会把this指向window。我做了点修改让他this指向当前对象了。还有一个缺点就是无法删除匿名函数写的事件。obj.attachEvent("on"+ev,function(){fn.call(obj);});可以把这个function写到一个单独的函数中就可以删除了。不过this就不会指向当前的对象了。如果想做的完美可以搜索detachEvent匿名函数或attachEvent匿名函数。如果还不懂可以M我。2023-07-29 18:53:231
编程,JavaScript中的onload无法多次调用,求解决办法
不但onload,所有事件都一样,如果同一个事件你写了多个触发的函数,那么它只会运行一个的。要想实现多次触发,必须使用addEventListener--“添加事件监听”的方法:window.addEventListener("load",函数1,false);window.addEventListener("load",函数2,false);要注意,这两个(或者更多)语句可以放在页面的不同地方(甚至可以是不同的js文件内),当网页加载(onload)时,这些函数就会逐一运行了。但是,上述方法在IE中无效,IE中要用attachEvent,而且用法也不同:window.attachEvent("onload",函数1);window.attachEvent("onload",函数2);2023-07-29 18:53:301
请教关于xcode登陆出现noseletion和noeditor问题
我因为表单要写onsubmit事件,但onsubmit返回false时ewebediter还是执行了提交,所以我研究过这个问题在includeEditor.js 的function setLinkedField() 我屏闭了这一行//oForm.attachEvent("onsubmit", AttachSubmit) ;然后怎样提交字串框都是空的,在表单的onsubmit事件中加下面这一句就OK了window.frames["eWebEditor1"].AttachSubmit();希望对你有帮助!!哎呀我打不开知道的登陆页.....bG9uZ2di下面是Editor.js文件的部分代码// 设置所属表单的提交或reset事件function setLinkedField() { if (! oLinkField) return ; var oForm = oLinkField.form ; if (!oForm) return ; // 附加submit事件 //oForm.attachEvent("onsubmit", AttachSubmit) ; if (! oForm.doneAutoRemote) oForm.doneAutoRemote = 0 ; if (! oForm.submitEditor) oForm.submitEditor = new Array() ; oForm.submitEditor[oForm.submitEditor.length] = AttachSubmit ; if (! oForm.originalSubmit) { oForm.originalSubmit = oForm.submit ; oForm.submit = function() { if (this.submitEditor) { for (var i = 0 ; i < this.submitEditor.length ; i++) { this.submitEditor[i]() ; } } this.originalSubmit() ; } } // 附加reset事件 oForm.attachEvent("onreset", AttachReset) ; if (! oForm.resetEditor) oForm.resetEditor = new Array() ; oForm.resetEditor[oForm.resetEditor.length] = AttachReset ; if (! oForm.originalReset) { oForm.originalReset = oForm.reset ; oForm.reset = function() { if (this.resetEditor) { for (var i = 0 ; i < this.resetEditor.length ; i++) { this.resetEditor[i]() ; } } this.originalReset() ; } }}// 附加submit提交事件,大表单数据提交,远程文件获取,保存eWebEditor中的内容var bDoneAutoRemote = false;function AttachSubmit() { var oForm = oLinkField.form ; if (!oForm) return; if ((config.AutoRemote=="1")&&(!bDoneAutoRemote)){ parent.event.returnValue = false; bDoneAutoRemote = true; remoteUpload(); } else { var html = getHTML(); ContentEdit.value = html; if (sCurrMode=="TEXT"){ html = HTMLEncode(html); } splitTextField(oLinkField, html); }}2023-07-29 18:53:451
小学生个人简况,简要摸板
an and from the infinite, so lon2023-07-29 18:54:062
如何实时获取鼠标的当前坐标
本文来做一个简单的实时获取鼠标坐标的功能,在canvas动画开发中,获取鼠标的坐标,键盘的按键等等,都是常用的操作,我们就慢慢得把他们封装成一个公共库。一、事件的兼容:function bindEvent(obj, event, fn) { if (obj.attachEvent) { //ie obj.attachEvent("on" + event, function () { fn.call(obj); }); } else { //chrome&ff obj.addEventListener(event, fn, false); } }上面兼容ie8以及修正this关键字在ie低版本的指向,下面兼容chrome和ff。其他更常用的封装可以参考我的javascript开源框架gdom二、用立即表达式搭建一个基本的库添加获取鼠标坐标的方法;(function (window) { window.G = {}; function bindEvent(obj, event, fn) { if (obj.attachEvent) { //ie obj.attachEvent("on" + event, function () { fn.call(obj); }); } else { //chrome&ff obj.addEventListener(event, fn, false); } } G.getPos = function( dom ){ var oPos = { x : 0, y : 0 }; bindEvent( dom, "mousemove", function( ev ){ var oEvent = ev || event, x, y; if ( oEvent.pageX || oEvent.pageY ){ x = oEvent.pageX; y = oEvent.pageY; }else { x = oEvent.clientX + document.body.scrollLeft || document.documentElement.scrollLeft; y = oEvent.clientX + document.body.scrollTop || document.documentElement.scrollTop; } x -= dom.offsetLeft; y -= dom.offsetTop; oPos.x = x; oPos.y = y; } ); return oPos; };})(window);三、引入封装的js库,绑定canvas为监听对象,打印当前鼠标的坐标鼠标的坐标,我这里画了2根线,便于观察.<head><meta charset="utf-8" /><script>;(function (window) { window.G = {}; function bindEvent(obj, event, fn) { if (obj.attachEvent) { //ie obj.attachEvent("on" + event, function () { fn.call(obj); }); } else { //chrome&ff obj.addEventListener(event, fn, false); } } G.getPos = function( dom ){ var oPos = { x : 0, y : 0 }; bindEvent( dom, "mousemove", function( ev ){ var oEvent = ev || event, x, y; if ( oEvent.pageX || oEvent.pageY ){ x = oEvent.pageX; y = oEvent.pageY; }else { x = oEvent.clientX + document.body.scrollLeft || document.documentElement.scrollLeft; y = oEvent.clientX + document.body.scrollTop || document.documentElement.scrollTop; } x -= dom.offsetLeft; y -= dom.offsetTop; oPos.x = x; oPos.y = y; } ); return oPos; };})(window);</script><style>#canvas{ border:1px dashed #aaa;}</style><script>window.onload = function(){ var oCanvas = document.querySelector( "#canvas" ), oGc = oCanvas.getContext( "2d" ), width = oCanvas.width, height = oCanvas.height, oInfo = document.querySelector( "#info" ), oPos = G.getPos( oCanvas ); oCanvas.addEventListener( "mousemove", function(){ oGc.clearRect( 0, 0, width, height ); oGc.beginPath(); oGc.moveTo( oPos.x, 0 ); oGc.lineTo( oPos.x, height ); oGc.moveTo( 0, oPos.y ); oGc.lineTo( width, oPos.y ); oGc.closePath(); oGc.strokeStyle = "#09f"; oGc.stroke(); oInfo.innerHTML = "鼠标的当前坐标是:(" + oPos.x + "," + oPos.y + ")"; }, false );}</script></head><body><canvas id="canvas" width="500" height="400"></canvas><p id="info"></p></body>2023-07-29 18:54:151
关于javascript中一个事件同时调用两个函数的问题
感觉这里addOnclick没有实际的用途,去掉 addOnClick照样能够正常运行。。恩,另外,addOnClick要起效果的话,执行一次就ok了,不需要每次都去运行~~2023-07-29 18:54:222
判断iframe中内容是否加载完毕
xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 加在iframe上 当然也可以在被包含的页上写 两种一种是全部内容加载完成 -----------------------------------------------------------------function init(){alert("页面加载完毕!");}window.onload=init;-----------------------------------------------------------------一种是dom加载完成,dom加载分为两种:FF和IE(IE也有两种) -----------------------------------------------------------------// for Mozilla browsersif (document.addEventListener) {document.addEventListener("DOMContentLoaded", function(){alert("DOM加载完毕!")}, null);}-----------------------------------------------------------------2023-07-29 18:54:302