当前位置: 首页 > news >正文

东莞网站制作支付通道特色产品推广方案

东莞网站制作支付通道,特色产品推广方案,网上商城平台运营方案,做苗木行业网站赚钱4 影子(Shadow)DOM 影子 DOM 是一个新东西,主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…

4 影子(Shadow)DOM
        影子 DOM 是一个新东西,主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。

4.1 什么是影子 DOM
        当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素组成,这些元素可以组成一颗 DOM 树的子树。这样一个 HTML 控件可以被到处使用,但是问题随之而来,那就是每个使用控件的地方都会知道这个子树的结构。 当网页的开发者需要访问网页 DOM 树的时候,这些控件内部的 DOM 子树都会暴露出来,这些暴露的节点不仅可能给 DOM 树的遍历带来很多麻烦,而且也可能给 CSS 的样式选择带来问题,因为选择器无意中可能会改变这些内部节点的样式,从而导致很奇怪的控件界面。

        如何将内部的节点信息封装起来,就像 C++ 语言的类一样,同时又能够将这些节点渲染出来呢 ? W3C 工作组提出的影子 DOM 概念。影子 DOM 的规范草案能够使得一些 DOM 节点在特定范围内可见,而在网页的 DOM 树中却不可见,但是网页渲染的结果中包含了这些节点,这就使得封装变得容易很多。

        下图描述了 HTML 文档对应的 DOM 树和 “div” 元素包含的一个影子 DOM 子树。当使用 JavaScript 代码访问 HTML 文档的 DOM 树的时候,通常的接口是不能直接访问到影子 DOM 子树中的节点的,JavaScript 代码只能通过特殊的接口方式。

        HTML5 支持了很多新的特性,例如对视频、音频的支持,读者会发现这些元素其实是由很复杂的控制界面组成,这些界面也是使用 HTML 元素编写,但是在 DOM 树中,你无法找到相应的节点,这其实也是使用了影子 DOM 的思想。

        因为影子 DOM 的子树在整个网页的 DOM 树中不可见,那么事件是如何处理的呢 ?事件中需要包含事件目标,这个目标当然不能是不可见的 DOM 节点,所以事件目标其实就是包含影子 DOM 子树的节点对象。事件捕获的逻辑没有发生变化,在影子 DOM 子树内也会继续传递。当影子 DOM 子树中的事件向上冒泡的时候, WebKit 会同时向整个文档的 DOM 上传递该事件,以避免一些很奇怪的行为。

4.2 WebKit 的支持
        WebKit 已经支持影子 DOM 的规范草案,虽然还存在一些问题。支持影子 DOM 的相关类在目录 “Source/core/dom/shadow” 下,里面的主要类是 ShadowRoot ,表示的是影子 DOM 的根节点。ShadowRoot 类继承自 DocumentFragment 类,所以它同样有 Node 节点的属性和方法,因而在影子 DOM 树的内部,遍历树没有什么特别不同的地方。

        当遍历 HTML 文档对应 DOM 树的时候,WebKit 需要做特别的判断,所以读者会发现在 WebKit 的 Node 类实现中存在大量的条件语句,用来检查当前节点是否是 ShadowRoot 对象,如果是该类的对象,把它作为不同 DOM 树之间的边界。有时候 WebKit 还需要对 ShadowRoot 对象作出特别处理,比如某些情况会略过它的子树,同样的,在事件处理的支持类 EventPathWalker 和 EventRetargeter 中,也需要做一些特别的处理逻辑,原理就是上面所述,细节不再介绍。

4.3 实践:使用影子 DOM
        示例代码 5-2 给出了一个简单的使用 webkitCreateShadowRoot 接口来创建影子 DOM 子树的例子。网页只包含了一个 “div” 元素,JavaScript 代码使用该元素创建了一个影子 DOM 子树的根节点,然后该根节点下加入了两个子女,第一个是图片元素,第二个是 “div” 元素,该元素内部包含了一些文本。

          打开 Chrome 浏览器的开发者工具,然后打开控制台,在其中输入 “document.firstChild.firstChild.nextElementSibling.firstElementChild.firstElementChild” 后会发现结果是空的,根据对应关系 “#document-> html -> head -> body -> div -> null”,虽然网页中没有 ‘head’ 元素,但是 DOM 树仍然会创建该节点。同时读者会发现 “div” 元素没有子女,影子 DOM 子树真的被隐藏起来了,成为真正的影子。

http://www.mmbaike.com/news/86740.html

相关文章:

  • 一流的聊城做网站费用网站优化人员通常会将目标关键词放在网站首页中的
  • 论新疆政府网站职能建设小程序推广赚佣金平台
  • 网站做seo需要大量文章营销宝
  • 自建网站备案通过后怎么做如何搭建网站
  • 企业公司网站模板下载嘉兴网站建设制作
  • 湖北联兴建设有限公司网站bt磁力库
  • 落实二十条优化措施武汉seo搜索引擎
  • 公司网站如何做水印网络营销文案策划
  • easyui 网站开发实现aso应用商店优化原因
  • 国内b2c网站什么是全网营销推广
  • 做爰网站上海百度推广电话客服
  • 贵港有网站建设的公司吗专业做加盟推广的公司
  • 《php网站开发实例教程》西安seo服务公司排名
  • 做算法题的 网站免费做做网站
  • 中国行业网站大全国内最新十大新闻
  • 凡科建站做网站需要几天被忽悠去做网销了
  • 做网站公司法人还要拍照吗免费顶级域名注册网站
  • 十大web网站漏洞扫描工具爱站网 关键词挖掘工具站
  • 如何用ai给网站做logo网站优化排名易下拉排名
  • 17网站一起做网店登录seo排名赚app多久了
  • 个人备案域名可以做企业网站吗windows优化大师免费版
  • 做微商网站需要哪些苏州搜索引擎排名优化商家
  • 网站空间ip地址项目推广计划书
  • 如何做公证网站网页发布时间百度云电脑版网站入口
  • 网站建设推广人员北京疫情太严重了
  • 网站设计论文总结关键词营销推广
  • 去什么网站做推广地推推广平台
  • 平台网站模板素材全球网络营销公司排行榜
  • 内网穿透做网站能查到网站ip吗淘宝的17种免费推广方法
  • 电商网站建设c微fzsszai百度一下百度下载