网站分析Hacks精选系列之JavaScript文档对象模型

  本文节选译自网站分析大师Eric T.Peterson的《Web Site Measurement Hacks》

  – HACK#30 "Hack the JavaScript Document Object Model"

  网站分析解决方案普遍采用标签方式,理解他们是如何使用JavaScript文档对象模型(DOM)的。

  大多数网站分析工具提供商都广泛使用JavaScript文档对象模型(DOM),你可能会担心提供商的代码是否会干扰到你自己的JavaScript代码。更重要的是,你应该也会担心服务商为了收集数据,使用了DOM可能提供的所有数据。

  下面是一些DOM提供的信息的例子:

  ● 浏览器的版本

  ● 操作系统的时间

  ● 操作系统的语言

  ● 显示器的分辨率

  ● 显示器的颜色深度

  ● 浏览器的高度和宽度

  ● 表单分析

  文档对象模型(DOM)是Web浏览器和JavaScript用来存储和获取文档(也就是页面)信息的一个数据结构(图 2-16)。JavaScript和JavaScript开发人员使用DOM收集数据,并显示数据信息。从插入网页监测标签到收集网站用户信息,DOM是核心。在图2-16中只是展示了DOM组件的一个片段,它能清晰的展示DOM大体结构。window对象是根节点,通过它能访问到所有其他元素。每一个对象都拥有函数、属性、事件、或者是包含其他对象。使用JavaScript可以存取或者控制DOM的每一个元素,下面的章节会详细说明。

  

  图2-16 JavaScript的文档对象模型

  插入监测标签

  跟你猜想的一样,基于监测标签的网站数据收集方式中最重要的东西就是监测标签(一个不可见的GIF图片 Hack#29)。往页面上插入监测标签主要有两个方法:通过服务器端的图片标签生成器和通过客户端的JavaScript。通过JavaScript来创建图片标签,网站分析工具提供商能收集到尽可能多的信息,而通过服务器端创建的图片标签,很多用户的信息就收集不到。

  document对象的write函数可以把HTML和JavaScript写入HTML文档。下面的代码就是一个例子:

<script language=”JavaScript”>
<!—
window.document.write(“<img src=’http://visionalist.cn/images/1×1.gif’ />”);
// –>
</script>

  这表明DOM的结构什么时候都是可以改变的。在这个例子中,我们使用document对象往文档中添加了一个元素,这个元素是一个图片。现在这个图片已经插入进去了,通过DOM就可以访问到它。

  JavaScript文档对象模型中的元素可以在任何时候改变位置。

  获取文档信息

  接下来图片的设置是非常重要的。这个图片的目的是用来收集页面,浏览器和用户的相关信息。这些信息也是通过DOM获取的。这里我们试着通过DOM获取页面的URL,并将这个URL包含到监测标签中:

<script language=”JavaScript”>
<!—
var url = window.localtion.href;
window.document.write(“<img src=’http://visionalist.cn/images/1×1.gif?url=’”+url+” />”);
// –>
</script>

  幸运的是,通过DOM可以收集到的信息不仅仅是上边演示的URL。比如:页面布局,多媒体支持,表单设计等信息它都能提供给我们。接下来,我们将讲解页面布局。

  获取浏览器的宽度

  当你把整个Web页面都放置在浏览器窗口的左半部分的话,可能就忽视了一些有价值的资源(空白版面)。除了让开发人员去询问他们朋友的浏览器的宽度,可以使用DOM来询问你的客户是否存在空间的浪费。

window.document.documentElement.offsetWidth;

  在IE的最新版本中,以上代码能返回浏览器窗口的像素值。虽然这个特有属性并不是在所有的浏览器里都可用,但是在大部分浏览器中,通过类似的属性提供了相同的信息。如果你使用的网站分析工具中,不能为你提供这些信息的报告,你可以通过下面的代码来自己获取。宽度被取整到最接近于50像素的值,以便于在对数据进行排序时不至于很麻烦。

var width=window.document.documentElement.offsetWidth;
var width=Math.round(width/50)*50;// 宽度按50像素取整

  跟踪表单项目错误

  到目前为止,DOM主要用来收集Web页面和浏览器的信息。其实也可以使用DOM来监视用户在页面上的动作。例如,监视用户是否使用了表单,以及对表单的使用情况。使用DOM,当事件发生时来调用相应的事件处理函数。大多数网站都使用基于JavaScript的表单错误验证,但是这些网站通常都没有跟踪表单中那些最容易出错的项目。下面的例子将展示如何使用错误验证函数来记录表单的出错情况。

  定义好checkError函数之后,当表单提交时(onsubmit事件),JavaScript就会使用DOM来调用该函数。需要注意的是,在checkError函数中,还调用了一个名叫sendErrorInfo的函数。网站分析工具会提供类似的函数方法,在页面中生成一张图片,然后将错误信息发送到数据收集服务器。最终,用户会得到一个报告(在下一节中会讲到),报告中显示了网站中最常见的表单出错情况。

function checkError() {
// 检查信用卡号是否是16位
if ( window.document.forms[0].creditcard.value.length!=16 ) {
sendErrorInfo(window.document.forms[0].name, “Credit Card Error: Length”);
return false;
}
// 更多的错误检查
return true;
}
// 当表单提交时调用checkError函数
window.document.forms[0].onsubmit=checkError;

  表单分析 – 来自DOM的恩惠

  现在应该明白如何使用DOM来生成一张图片,从而收集浏览器信息,监视用户的操作情况了,我们可以将这些信息组合起来,创造一个有价值的统计工具。DOM可以提供有价值的商业信息,并且可以窥探到用户体验的精妙之处。例如,可以找到表单中哪个项目让用户无法忍受了;信用卡账号、头发颜色、母亲的旧姓、或者邻居家的电话号码等等是不是太多的项目需要填写了;到底是在哪一步让你失去了潜在的客户?

  当用户离开页面时,可以使用JavaScript和DOM发送信息(通过在页面中生成一张图片来实现),我们就可以知道该用户在离开页面之前访问的最后一个表单项目,也许这个表单项目就是让用户无法忍受的部分。图2-17中的报告展示了Checkout-Shipping页面的ShippingInfo表单。值得注意的是,该表单成功提交了154次,但是有202次用户并没有点击过表单就离开了页面。还有一点,大多数用户在点击了PhoneNumber字段后就离开了。

  

  图2-17简单表单项目分析

  所有的分析师都想亲自到他们客户的办公室里去了解客户的真实需求,DOM就可以实现他们的愿望。和所有的网站分析工具一样,这种收集信息的方法并不能捕捉到100%的用户,但是由于访问网站95%的用户都启用了JavaScript,因此这些信息要比“统计学上的重要样本”多的多。网站中需要收集的其他信息还有很多,只需要找到那个能解开这一切信息的“人”。

  — Brett Error, John Pestana, Eric T. Peterson

  (版权归数码林网站分析博客所有,欢迎转载,但转载请注明出处。)

原文:http://blog.digitalforest.cn/hacks-30-javascript

时间: 2025-01-29 22:15:56

网站分析Hacks精选系列之JavaScript文档对象模型的相关文章

JavaScript文档碎片操作实例分析_javascript技巧

本文实例分析了JavaScript文档碎片操作方法.分享给大家供大家参考,具体如下: 使用文档碎片在某些情况下可以提高页面效率. javascript操作dom是一个很耗性能的过程,在某些情况下,不得不进行dom循环操作,我们每次对dom的操作都会触发"重排",这严重影响到能耗,一般通常采取的做法是尽可能的减少dom操作来减少"重排". 面对循环操作dom的过程,我们选择使用文档碎片(creatDocumentFragment),将需要添加到dom中的内容一次性添加

Domino下功能强大的JavaScript文档编辑器源码,

问题描述 Domino下功能强大的JavaScript文档编辑器源码,不能直接发图,恼火,只有点连接去看了哦. 解决方案 解决方案二:唉,现在咋啥都上淘宝.解决方案三:小心你的老板告你,这属于盗窃公司的知识产权解决方案四:自己做的,我就是版权,基于AJAX的工作流引擎即将完成出炉,大家关注,,,支持节点任意拖放,支持流程公式定义.可视化,所见即所得解决方案五:顶一个解决方案六:真廉价啊~~~解决方案七:不错,用到了会买的解决方案八:先不管功能如何.看到售价25就无语了.....解决方案九:看到2

理解document.all[]:DOM文档对象模型

文章简介:浅谈document.all与WEB标准. 1.DOM WEB标准现在可真是热门中热门,不过下面讨论的是一个不符合标准的document.all[].DOM--DOCUMENT OBJECT MODEL文档对象模型,提供了访问文档对象的方法.例如文档中有一个table,你要改变它的背景颜色,那就可以在javascript中用document.all[]访问这个TABLE.但DOM也有所不同,因为浏览器厂商之间的竞争,各浏览器厂商都开发了自己的私有DOM,只能在自己的浏览器上正确运行,d

C#发现之旅第十讲 文档对象模型

为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅 "的技术讲座.考虑到各位大多是进行WEB数据库开发的,而所谓发现就是发现我们所 不熟悉的领域,因此本系列讲座内容将是C#在WEB数据库开发以外的应用.目前规划的主要内 容是图形开发和XML开发,并计划编排了多个课程.在未来的C#发现之旅中,我们按照由浅入 深,循序渐进的步骤,一起探索和发现C#的其他未知的领域,更深入的理解和掌握使用C#进 行软件开发,拓宽我们的视野,增强我们的软件开发综合能力. 课程说明 本

文档对象模型DOM通俗讲解_基础知识

在开始之前先说一点,DOM是非常容易理解的,但是大家说的太官方,让人很是难于理解,我们就用非常简单的语言翻译一遍.加深对DOM的理解,从而对它有一个全面的认识. 什么是DOM DOM的全称是Document Object Model,即文档对象模型,它允许脚本控制Web页面.窗口和文档. 如果没有DOM,JavaScript将是另外一种脚本语言:而有了DOM,它将成为制作动态页面的强有力工具.DOM不是JavaScript语言的一部分,而是内置在浏览器中的一个应用程序接口.当然,我们可以简单的理

网站分析Hacks之定义商业目标转变成可度量的活动

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 本文节选译自网站分析大师Eric T.Peterson的<Web Site Measurement Hacks> – HACK#38 "Identify Your Business Objectives" 实现真正的商业价值,首先必须要知道测量什么和为什么测量. 网站分析测量从根本上来说就是一个问题:"

Pro Javascript Techniques第五章: 文档对象模型

在过去十年里web开发所取得的所有进步当中,DOM(文档对象模型)脚本是开发者可用来改进其用户体验质量的最重要的技术. 使用DOM脚本向页面加入非侵入的JavaScript(意味着它不会与不支持的浏览器或禁用了JavaScript的用户发生冲突),你将能提供各种你的用户可享受的现代浏览器的增强功能,同时又不会损害那些不能利用它们的用户.这么做的一个副作用是,你的所有代码最终都可以被很好的分离和更容易地管理. 可喜的是,所有的现代浏览器都支持DOM并额外地支持一个当前HTML文档的内建的DOM表述

javascript 文档的编码问题解决_javascript技巧

所以呢,在引用js文档的时候,要设置被引用的文档是什么编码的. 如:一个utf-8的页面引用一个gb2312的js文档,那么就要这么写 <script type="text/javascript" charset="gb2312" src="gb2312.js"></script> 这样就不会出现问题了.

使用JavaScript遍历文档对象模型

文中使用一个示例应用程序演示了 DOM 方法和属性以及如何向 DOM 事件附加处理程序. 万维网联盟 (W3C) 已经在不同的规范组(DOM 1 级.DOM 2 级和 DOM 3 级)对文档对象模型 (DOM) 进行了定义. DOM 将 HTML 或 XML 表示为一棵树,该树由具有属性和方法的不同层次的节点组成.使用客户端语言例如 JavaScript,您可以为该树中的节点添加.修改.删除以及附加事件,从而产生交互.动态的 Web 页面. 使用客户端脚本语言 (JavaScript) 修改 D