首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 事件绑定

一.传统事件绑定的问题 传统事件绑定有内联模型和脚本模型,内联模型我们不做讨论,基本很少去用。先来看一下脚本模型,脚本模型将一个函数赋值给一个事件处理函数。...; 问题一:一个事件处理函数触发两次事件 window.onload = function () {//第一组程序项目或第一个JS文件 alert('Lee'); }; window.onload = ...function () {//第二组程序项目或第二个JS文件 alert('Mr.Lee'); }; 当两组程序或两个JS文件同时执行的时候,后面一个会把前面一个完全覆盖掉。...但其他的事件处理函数也一并被删除了,导致最后得不到自己想要的结果。如果想要只删除指定的函数中的事件处理函数,那就需要遍历,查找。...在使用这两组函数的时候,先把区别说一下:1.IE不支持捕获,只支持冒泡;2.IE添加事件不能屏蔽重复的函数;3.IE中的this指向的是window而不是DOM对象。

3.4K60

JavaScrtip之JS最佳实践

,所以把新的url地址传给此函数时,这个函数将把新窗口的现有文档替换成新url地址处的文档,而不是去新创建一个窗口!...我们将这个函数存入一个外部文件,当需要在某个网页里使用这个函数时,只要导入这个外部文件即可.倒入外部文件后: 1.使用"javascript:"伪协议使用popUp()方法 "真"协议用来在因特网上计算机之间传输数据包...四、JavaScript之合理的合并和放置脚本 1.使用JavaScript脚本的最佳方式是使用外部文件,因为外部文件能与html标签清晰的分离开来,最重要的是浏览器也能对站点中的多个页面重用缓存过的相同脚本..."script/c.js"> js"> 推荐的做法是把这四个文件合并到一个脚本中。...五、脚本压缩 在写完了脚本,做了优化,而且将他放到文档中的合适位置后,还有一件事可以加快下载速度:压缩脚本文件; 所以我们开发应该至少有两个版本,一个是开发中用的包含注释的,另一个是运行用的压缩版。

2.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript 事件基础补充

    在内联模型中,事件处理函数是HTML标签的一个属性,用于处理指定事件。虽然内联在早期使用较多,但它是和HTML混写的,并没有与HTML分离。...//在HTML中把事件处理函数作为属性执行JS代码 onclick="alert('Lee');"  />//注意单双引号 //在HTML...中把事件处理函数作为属性执行JS函数 onclick="box();"  />//执行JS的函数 PS:函数不得放到window.onload...三.脚本模型 由于内联模型违反了HTML与JavaScript代码层次分离的原则。为了解决这个问题,我们可以在JavaScript中处理事件。这种处理方式就是脚本模型。...window.onload = function () { alert('Lee'); }; unload:当页面完全卸载后在window上面触发,或当框架集卸载后在框架集上触发。

    3.1K50

    【Java 进阶篇】JavaScript 与 HTML 的结合方式

    标签内定义了一个JavaScript函数greet(),并在元素的onclick属性中调用该函数。...1.2 外部文件方式 为了更好地组织代码并提高可维护性,你可以将JavaScript代码保存在外部文件中,并在HTML中引入这些文件。这样可以将JavaScript代码与HTML分离,使代码更清晰。...; } 在这个例子中,我们将JavaScript代码放入了一个名为script.js的外部文件,并通过标签的src属性引入该文件。...-- 页面内容 --> 在上面的示例中,script1.js将立即异步加载,而script2.js将在HTML解析完毕后按顺序执行。 2....你可以使用内联方式或外部文件方式添加事件处理程序。以下是一个使用内联方式的示例: <!

    73240

    web前端开发初学者十问集锦(5)

    场景一: 在页面代码加载完成之后,不得不执行一些设置工作,比如附加时间处理器,创建对象等等,所有的这些工作只需要执行一次,所以没有理由创建一个可复用的命名的函数。...是一个字符串类型的属性,不是一个函数,但它需要一个函数在脚本被载入时被执行并帮忙定义属性。...假如你的页面是稳定的并且在没有JavaScript情况下能正常工作,然后本着逐步加强的想法,你加入了一些代码加强页面某个方面;你可以将这些代码封装进一个立即执行函数中,并且确保页面没有它的情况下也能正常工作...我的HTML文件布局是这样的,CSS样式写在了标签内,JS脚本写在了标签后,也就是说我的CSS样式和JS代码全部写在了HTML文件内,并未独立开来。...而window.onload事件则需要HTML文档的所有内容与相关联的内容统统加载完成之后才能被触发。 9.为什么img的margin-top无效,margin-bottom有效?

    89320

    JavaScript图片库

    注意return false;表示阻止超链接跳转的默认行为;让我们了解一下DOM1中的事件处理函数的工作机制。在给某个元素添加了事件处理函数后,一旦事件发生,相应的JavaScript代码就会被执行。...--合理放置了JS脚本在加载完DOM后在加载JS脚本,提高了页面的加载速度,提现了内容优先的原则--> 在学习完JavaScript动态向文档中添加元素和内容后http://www.cnblogs.com...--合理放置了JS脚本在加载完DOM后在加载JS脚本,提高了页面的加载速度,提现了内容优先的原则--> 这个版本的图片库的结构和行为分离的已经很彻底了,但是还是有个问题...图片库再做一次改进,代码如下: 第六版: utility.js  公共库 /* window.onload事件(当页面加载完毕时需要调用的事件,也就是说当我们在开发中需要调用一些JS函数在页面加载完毕后执行的可以和这个事件绑定...-需要与window.onload事件绑定的函数名数组 */ function addOnloadEventlist(eventlist) { if (!

    3.7K60

    如何避免 JavaScript 模块化中的函数未定义陷阱

    例如,像 pageLoad 这样在普通脚本中可以正常工作的函数,转为 ES6 模块后,在浏览器或其他模块中调用时,可能会抛出未定义的错误: Uncaught ReferenceError: pageLoad...问题的原因是,模块中的代码默认处于模块的私有作用域中,而不是全局作用域,因此 window.onload 无法直接访问 pageLoad 函数。...全局变量的问题:为什么普通脚本中的全局变量或函数在模块化后不再可用 由于模块的作用域是私有的,导致在普通脚本中定义的全局变量或函数,在模块化后无法直接作为全局对象的一部分被访问。...以下是模块和普通脚本的关键区别: 普通脚本的全局作用域:在非模块化文件中,所有定义的变量和函数都会自动成为全局对象(window)的一部分,因此像 pageLoad 这样的函数可以直接被 window.onload...例如,在需要模块之间通信时,可以使用事件驱动的模式或发布-订阅模式,而不是直接调用其他模块的函数。

    12510

    IE中的内存泄露

    由于依赖指定的关键字和语法结构,Closures调用是比较容易被我们发现的; 3、页面交叉泄漏(Cross-Page Leaks) — 页面交叉泄漏其实是一种较小的泄漏,它通常在你浏览过程中,由于内部对象薄计引起...下面我们会讨论DOM插入顺序的问题,在那个示例中你会发现只需要改动少量的代码,我们就可以避免对象薄计对对象构建带来的影响; 4、貌似泄漏(Pseudo-Leaks) — 这个不是真正的意义上的泄漏,不过如果你不了解它...button> 而大多数情况下,并不会使用上面的这种方法去追加DOM节点(需要绑定事件的...> 所以,我觉得上面的一些例子并不是十分符合实际开发中的一些写法和规范(如监听onclck事件的方法);只是如果你不小心在代码中写下与上面相似的代码,那么它就可能已经产生内存泄露了...="LeakMemory()" /> 比较上面的两段代码,会发现仅仅是第一段比第二段多了一个内联脚本对象(onclick=’foo()’),它没有被正确的释放。

    96940

    高性能Javascript--脚本的无阻塞加载策略

    不论实际的 JavaScript 代码是内联的还是包含在一个不相干的外部文件中,页面下载和解析过程必须停下,等待脚本 完成这些处理,然后才能继续。...同样的事情发生 在使用 src 属性加载 JavaScript 的过程中。浏览器必须首先下载外部文件的代码,这要占用一些时间,然后 解析并运行此代码。...通过这种方法,就不再需要两个 标签(每个标签加载一个文件),一个标签就可以加载他们。这是在HTML页面包含多个外部Javascript的最佳方法。   ...So,非阻塞脚本应运而生,我们需要的是向页面中逐步添加javascript,某种程度上而言不会阻塞浏览器。...此方法可以保证页面在脚本运行之前完成解析。 将脚本成组打包。页面的标签越少,页面的加载速度就越快,响应也更迅速。不论外部脚本文件还是内联代码都是如此。

    97230

    编写高质量 JavaScript -- 知识点小记

    一: 团队合作避免JS冲突 脚本中的变量随时存在冲突的风险, 1.  ...解决办法---用匿名函数将脚本包起来,让变量的作用域控制在匿名函数之内 如: (function(){...给程序一个统一的入口===== window.onload 或DOMReady (先把所有函数定义部分放入 init函数中,最后再加载 init()即可使用 如:在DOM节点加载进来之前就调用会出错...window.onload要等到网页元素全部加载才进行   而DOMReady则只要页面内所有DOM节点皆全部生成即可进行。  ...CSS 文件与 JS 文件的位置    因为JS是阻塞型的,所以一般” CSS放在页头,Javascript放在页尾“    (这样一来,网页先呈现给用户,再慢慢加载页面里面的脚本,减少页面空白的时间)

    1.4K10

    前端之JavaScript

    操作元素属性 var 变量 = 元素.属性名 读取属性 元素.属性名 = 新属性值 改写属性 属性名在js中的写法 1、html的属性和js里面属性写法一样 2、“class” 属性写成 “className...; } 变量作用域 变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。 1、全局变量:在函数之外定义的变量,为整个页面公用,函数内部外部都可以访问。...2、局部变量:在函数内部定义的变量,只能在定义该变量的函数内部访问,外部无法访问。...封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数。...; }() 封闭函数的作用 封闭函数可以创造一个独立的空间,在封闭函数内定义的变量和函数不会影响外部同名的函数和变量,可以避免命名冲突,在页面上引入多个js文件时,用这种方式添加js文件比较安全,比如:

    1.9K40

    浏览器插件开发-manifest文件解读「建议收藏」

    猜测 browser_action 适用于用户需要点击图标后在弹窗中操作的场景 page_action 试用与在后台运行,重要工作是监听用户行为的插件 官方建议:如果要实现的功能只针对某一个页面有用则建议使用...(怎么相应自定义) 以下情况会需要调用到后台脚本 扩展首次下载或者版本更新 后台脚本中正在监听事件,并且这事件被触发了 content_script 或者其他扩展中调用了 sendMessage...,可以称之为隔离环境,在这里可以访问所注入页面的DOM,但是不能访问里边的任何 javascript 变量和函数,反之,页面中的js 也不能访问 content_script 中的变量和函数 访问目标网站的..., 声明型注入脚本 content_scripts 值可以是一个数组,设置不同站点的不同注入文件 需要设置 matches: ["http://"] 指定匹配的网址, js 设置注入脚本 css...禁止内联块和内联事件处理程序(例如,onclick="…">) 只有扩展包内的脚本和资源才会被加载!

    2.5K20

    客户端的js js脚本的引入 js的解析过程

    放置在标签的src属性指定的外部文件中 3. 放置在html事件处理程序中,该事件处理程序由onclick或onmouseover这样的html属性值指定 4....*定义圆角*/ } Digital Clock 外部文件中脚本...在core.js执行的时候读取这段文本,然后动态执行一次。浏览器不会执行之间的代码 html中的事件处理程序 当脚本所在的html文件被载入的时候。脚本里的js会执行一次。...一个约定,事件处理程序一般是on开头的 举例 window.onload = function() {}; document.getElementById('button1').onclick = function...[endif]--> ie支持条件注释,上方是使用条件注释的,在ie下,将会执行上方的js脚本 通过 @_jscript 可以判断是不是ie,因为该变量在ie中圆圆为true 写法如下,用于ie的 使用条件注释来写

    13.1K80

    编写兼容性JS代码

    前文介绍了:  1 DOM四个常用的方法   2 使用DOM核心方法完成属性填充 本篇主要介绍在JS中需要注意的几个地方,另外为了减小html与javascript的耦合使用java进行onclick...其实javascript不是一门简单的语言,但是由于入门简单,很多人使用的时候,都是直接复制粘贴,导致网页中充斥着大量的冗余代码。   ...但是在编写合格的javascript代码时,需要注意:   1 平稳退化:保证在不支持js或者低版本的浏览器也能正常访问   2 分离javascript:把html与javascript分离,有助于后期代码的维护...  3 向后兼容性:确定老版本的浏览器不会因为脚本禁止而死掉   4 性能考虑:确定脚本执行的最优   编写优化的代码   针对前一篇中的相册的代码,这里主要修改的地方是把onclick方法删除,在页面加载时...,则把参数方法传给它;否则在它的函数方法后面,在添加方法 if(typeof window.onload !

    3.2K90

    《JavaScript 模式》读书笔记(8)— DOM和浏览器模式2

    在这种情形下,由于数据十分简单,甚至不需要使用JSON格式,只需要使用一个数值表示就行。 框架和图像灯塔 使用框架也是一种处理远程脚本的备选方案。...CDN提供付费的主机服务,它允许您将文件副本放置于全球各个数据中心,以便用户可以选择速度最快的服务器进行连接,而您文件代码中的URL地址不需要修改。   ...  然后,需要将所有单独的内联脚本封装到一个函数中,并将每个函数增加到inline_scripts数组中,如下所示: // 过去是 // console.log('I am inline...载入第二部分JavaScript代码的方法非常简单,只需要再一次为head或者body添加动态脚本元素: window.onload = function () { var script = document.createElement...}   现在测试一下require()函数: document.getElementById('gogo').onclick = function () { require('ondemand.js.php

    98830

    《JavaScript 模式》读书笔记(8)— DOM和浏览器模式2

    在这种情形下,由于数据十分简单,甚至不需要使用JSON格式,只需要使用一个数值表示就行。 框架和图像灯塔 使用框架也是一种处理远程脚本的备选方案。...CDN提供付费的主机服务,它允许您将文件副本放置于全球各个数据中心,以便用户可以选择速度最快的服务器进行连接,而您文件代码中的URL地址不需要修改。   ...  然后,需要将所有单独的内联脚本封装到一个函数中,并将每个函数增加到inline_scripts数组中,如下所示: // 过去是 // console.log('I am inline...载入第二部分JavaScript代码的方法非常简单,只需要再一次为head或者body添加动态脚本元素: window.onload = function () { var script = document.createElement...}   现在测试一下require()函数: document.getElementById('gogo').onclick = function () { require('ondemand.js.php

    1.1K20

    JavaScript笔记(18)之BOM

    是窗口(页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像,脚本文件,CSS文件等),就调用的处理函数....又或者是将写在head标签里,都是可以的,现在我们的script标签的位置就能更换了,不必按照自上而下执行的顺序,甚至能写到外部的文件中....注意: 有了window.onload就可以把JS代码写到页面元素的上方,因为onload是等页面内容全部加载完毕再去执行处理函数 window.onload传统注册事件方式只能写一次,如果有多个,会以最后一个...element.onclick=function() {}或者element.addEventListener('click', fn);里面的函数也是回调函数 停止setTimeout( )定时器 window.clearTimeout...好在都解决了,自己想办法解决问题真的很有趣 看一下我是怎么做的吧 听老师讲完,发现自己还存在一些问题: 解决方法:在调用定时器之前先执行一次函数 停止setInterval( )定时器

    81810

    浏览器特性

    标签 HTML中的 标签用来加载外部脚本或者编写内联脚本。 页面在执行时,遇到 标签都会让页面等待脚本的解析和执行。.../index.js'; script.onload = function(){ alert("脚本加载完成!")...组织脚本 由于每个 脚本都会阻塞页面渲染(当然除了有 defer 和 async 属性的标签)。那么在开发中应怎样改善这一情况呢?...为了提高页面性能或者说体验,可以通过以下方式进行优化: 把多个脚本文件进行合并,这样可以减少网络请求数量。但并不是合并越多越好,文件太大还会导致阻塞事件变长。...这不仅包括直接加载到 元素中的 URL ,还包括可以触发脚本执行的内联脚本事件处理程序(onclick); frame-src 指定有效来源的 ; img-src 指定图像和图标的有效来源

    1.3K10

    JS中的垃圾回收与内存泄漏

    局部变量只在函数的执行过程中存在,而在这个过程中会为局部变量在栈或堆上分配相应的空间,以存储它们的值,然后在函数中使用这些变量,直至函数结束,而闭包中由于内部函数的原因,外部函数并不能算是结束。...在IE7与IE8上,内存直线上升。 我们知道,IE中有一部分对象并不是原生js对象。...('element'),而document.getElementById('element')的onclick方法会引用外部环境中的变量,自然也包括obj,是不是很隐蔽啊。...但是如果环境中就是有这么多变量等一直存在,现在脚本如此复杂,很正常,那么结果就是垃圾回收器一直在工作,这样浏览器就没法儿玩儿了。...而Javascript的GC在100ms甚至以上,对一般的应用还好,但对于JS游戏,动画对连贯性要求比较高的应用,就麻烦了。这就是新引擎需要优化的点:避免GC造成的长时间停止响应。 3.

    3.8K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券