0. 使用环境

Dojo版本:1.14.2

此次总结以dojo的base为主,即不需要手动引入组件

1. 常用不归类方法

1.1. dojo.addOnLoad

在页面加载完成并且dojo.require语句的请求也返回了结果之后执行

dojo.addOnLoad(function () {
/* Any content that depends upon dojo.require statements goes here... */
});

1.2. dojo.isXXX

1.2.1. 检测底层浏览器

用于检测浏览器, 源代码位于\dojo\_base\sniff.js,当前版本不推荐直接使用,而是使用dojo.sniff,但是直接使用很方便。

如果是,返回对应浏览器的版本号。

dojo.isIE
dojo.isFF // 是否为FireFox
dojo.isChrome
...

1.2.2. 检测类型

代码位于js/dojo/1.14.2/dojo/_base/lang.js

dojo.isString
dojo.isArray
dojo.isFunction
dojo.isObject
dojo.isArrayLike
dojo.isAlien // 是内置函数或ActiveX组件之类的本地函数

1.3. 通过模块管理源代码

dojo.provide    //
dojo.require //
dojo.declare // 声明构造函数

2. DOM操作

2.1. 查找节点

2.1.1. dojo.byId

替代document.getElementById的方法。

2.1.2. dojo.query

通过CSS3风格的语法实现快速查询节点

dojo.query("d2");
dojo.query(".cc");
dojo.query("div#d3");
dojo.query("div.cc");
dojo.query("form[name='foo']");

2.2. 构造节点

dojo.toDom(("<tr><td>First!</td></tr>"));       // 字符串转DOM
dojo.create("tr"); // 返回节点
dojo.empty("d1"); //清空节点内容
dojo.place("d2","d1"); // 将d2节点放在d1节点内,作为最后一个子节点
dojo.place("d2","d1","before"); // 将d2节点放在d1节点之前,第三个参数的值域为:before, after, replace, only, first, last

2.3. DOM实用功能

2.3.1. dojo.isDescendant

判定祖先

dojo.isDescendant('s1','d4');       // true

2.3.2. dojo.setSelectable

设置可选择性,是否可以选中

dojo.setSelectable("d1");           // 设置不可选中
dojo.setSelectable("d1",true); // 设置可选中

2.3.3. 为节点添加样式

2.3.3.1. dojo.style
dojo.style("d1", {
height : "100px",
width : "100px",
border : "solid 3px red"
});
2.3.3.2 对节点的class属性的操作

代码位于/dojo/_base/html.js/dojo/dom-class.js

dojo.hasClass("d4","ac");

// addClass,三种写法
dojo.addClass("d1","d1c");
dojo.addClass(dojo.byId("d1"),"d2c");
dojo.query("d1").addClass("d1c"); // 这里必须是 dojo/NodeList 才可以执行此操作 // 三种写法,同addClass
dojo.removeClass("d4","ac"); dojo.toggleClass("d4","ac") dojo.replaceClass("d4","dc","ac");

2.3.4. 操作属性

dojo.attr("d4","attr1");            // 获得d4节点的attr1属性
dojo.attr("d4","attr1","dd"); // 设置d4节点的attr1属性
dojo.hasAttr("d1","attr1");
dojo.removeAttr("d1","attr1")

3. 实用工具

3.1. 数组处理

// 查找元素位置
dojo.indexOf([1,2,3,4,3], 3); // 2
dojo.lastIndexOf([1,2,3,4,3], 3); // 4 // 根据条件测试元素
dojo.every([2,4,6], function (x) { return x % 2 == 0 }); // true
dojo.some([3,5,7], function f(x) { return x % 2 == 0 }); // false // 迭代操作元素
dojo.forEach([1,2,3], function(x) {
console.log(x);
}); // 转换元素
var z = dojo.map([2,3,4], function(x) {
return x + 1;
}); //returns [3,4,5] dojo.filter([2,3,4], function(x) {
return x % 2 == 0;
}); //returns [2,4] // every,some,forEach,map,filter支持简化的字符串式函数
// 以every为例,其他用法一样
[2,4,6].every(function (x) { return x % 2 == 0 });

3.2. JavaScript对象实用程序

3.2.1. dojo.mixin、dojo.extend

// mixin生成一个对象实例,该实例混入了其他对象的结果;
// extend修改的是一个函数的原型;
dojo.mixin
dojo.extend
function Man(  ) {
this.x = 10;
} function Myth( ) {
this.y = 20;
} function Legend( ) {
this.z = 30;
} var theMan = new Man;
var theMyth = new Myth;
var theLegend = new Legend; function ManMythLegend( ) {} // dojo.mixin
// var theManTheMythTheLegend = new ManMythLegend;
// dojo.mixin(theManTheMythTheLegend, theMan, theMyth, theLegend); // dojo.extend
// dojo.extend(ManMythLegend, theMan, theMyth, theLegend);
// var theTheManTheMythTheLegend = new ManMythLegend;

3.2.2. dojo.clone

JavaScript提供的是浅复制,dojo提供的是深复制,根据需要选择

function foo(  ) {
this.bar = "baz";
} var foo1 = new foo;
var foo2 = foo1; // 浅复制 console.log(foo1.bar); // baz
console.log(foo2.bar); // baz foo1.bar = "qux"; console.log(foo1.bar); // qux
console.log(foo2.bar); // qux foo3 = new foo;
foo4 = dojo.clone(foo3); // 深复制 foo3.bar = "qux"; console.log(foo3.bar); // qux
console.log(foo4.bar); // baz

3.3. 事件相关

3.3.1. dojo.connect / dojo.disconnect

为节点添加UI事件

// 一次性事件
var handle = dojo.connect(dojo.byId("d1"), "onclick", function () {
console.log("d1...");
dojo.disconnect(handle);
});

3.3.2. dojo.keys

键码的标准化,代码位于 js/dojo/1.14.2/dojo/keys.js

dojo.keys.ENTER     // 13,回车键的码

3.3.3. 阻止事件

dojo.stopEvent(event);      // 抑制浏览器导航,并阻止事件冒泡,等同于   evt.preventDefault();evt.stopPropagation();

3.3.4. JSON

dojo.fromJson(/*String*/ json);     // 返回JSON对象
dojo.toJson(/*Object*/ json, /*Boolean?*/ prettyPrint); // 返回JSON字符串
dojo.fromJson('{"k1":"v1","k2":"v2"}');
dojo.toJson({'k1':'v1','k2':'v2'});
dojo.toJson({'k1':'v1','k2':'v2'}, true);

3.3.5. Ajax

dojo.xhr(/*String*/ method, /*Object*/ args, /*Boolean?*/ hasBody)
dojo.xhr("GET", {
url: 'http://localhost:63342/TestInIDEA/DOJO/html/main/1.html',
handle: function (loadOrError, response, ioArgs) { }
});

3.3.6. 表单

dojo.formToObject("register");
{first: "Foo", last: "Bar", favorites: Array(2)}
dojo.formToJson("register");
"{"first":"Foo","last":"Bar","favorites":["green","blue"]}"
dojo.formToQuery("register");
"first=Foo&last=Bar&favorites=green&favorites=blue"
dojo.queryToObject("first=Foo&last=Bar&favorites=green&favorites=blue");
{first: "Foo", last: "Bar", favorites: Array(2)}
dojo.objectToQuery(dojo.queryToObject("first=Foo&last=Bar&favorites=green&favorites=blue"));
"first=Foo&last=Bar&favorites=green&favorites=blue"

4. 使用扩展

  1. dojo.string
  2. dojo.date
  3. dojo.number
  4. dojo.currency
  5. dojo.Color
dojo.Color.named.black

参考资料

  • 《DOJO权威指南》

20190320 Dojo常用方法总结的更多相关文章

  1. Using dojo/query(翻译)

    In this tutorial, we will learn about DOM querying and how the dojo/query module allows you to easil ...

  2. AngularJs2与AMD加载器(dojo requirejs)集成

    现在是西太平洋时间凌晨,这个问题我鼓捣了一天,都没时间学英语了,英语太差,相信第二天我也看不懂了,直接看结果就行. 核心原理就是require在AngularJs2编译过程中是关键字,而在浏览器里面运 ...

  3. Dojo前端开发框架与jQuery前端开发框架,对比分析总结

    最近Dojo和jQuery双双发布了最新的1.8版本,有着相同版本号的两个Javascript库也有许多核心的相同之处:相同的资源加载机制AMD.相同的选择器 引擎Sizzle等.作为业界知名的Jav ...

  4. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  5. Jquery元素选取、常用方法

    一:常用的选择器:(李昌辉) 基本选择器 $("#myDiv") //匹配唯一的具有此id值的元素 $("div") //匹配指定名称的所有元素 $(" ...

  6. Dojo: Quick Start

      1.Dojo学习地址 2.Dojo快速开始 2.1.Dojo引入 2.2.指定Dojo模块的位置 2.3.模块加载require 3.查找Dom节点 3.1.根据id查找dom节点 3.2.根据c ...

  7. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  8. C# Webbrowser 常用方法及多线程调用

    设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...

  9. list,tuple,dict,set常用方法

    Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...

随机推荐

  1. JSTLView快速国际化(SpringMVC)

    JSTLView:快速国际化:只要导入了jstl的jar包,以前默认创建的InternalResouceView都会被使用jstlView替代:    国际化的新步骤:           1).写好 ...

  2. hadoop伪分布式安装之Linux环境准备

    Hadoop伪分布式安装之Linux环境准备 一.软件版本 VMare Workstation Pro 14 CentOS 7 32/64位 二.实现Linux服务器联网功能 网络适配器双击选择VMn ...

  3. Oracle 控制文件管理

    控制文件是一个很小的二进制文件(10MB左右),含有数据库结构信息,包括数据文件和日志文件信息.控制文件在数据库创建时被自动创建,并在数据库发生物理变数时更新.控制文件被不断更新,在任何时候都要保证控 ...

  4. Windows 聆听 简单使用体验

    1. 点击windows 按键 输入语音 按照操作 选择语音 并且读出那一段话. 2. 可以将windows 语音识别 添加到开始面板 3. 使用时 点击 该图标,然后点击麦克风按钮 聆听效果如图示 ...

  5. Angular 添加路由

    var app=angular.module('kaifanla',['ng','ngRoute']);app.config(function($routeProvider){ //添加路由 $rou ...

  6. String()与toString的区别

    1..toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined 代码示例: var a = null.toString()--报错 var b = underf ...

  7. ERP开源框架 + 二次开发平台 介绍

    经历了多年软件开发,深受网络大侠们的资源共享才得以有所成绩, 本人主要是做企业ERP软件,一直有个感受,开发具体某个功能不难,但随着需求的增加,管理庞大的代码却成了最大的问题 而为企业管理所做的开发, ...

  8. Bootstrap辅助类

    前面的话 Bootstrap提供了一组工具类,用于辅助项目的开发.本文将详细介绍Bootstrap辅助类 文本色 通过颜色来展示意图,Bootstrap 提供了一组工具类.这些类可以应用于链接,并且在 ...

  9. VS2013编译报错error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

    解决方法有两个: 1. 在预编译头文件stdafx.h里(在没有include任何头文件之前)定义下面的宏: #define _CRT_SECURE_NO_DEPRECATE 2. 将sprintf函 ...

  10. 【POJ1456】Supermarket(贪心)

    BUPT2017 wintertraining(16) #4 F POJ - 1456 题意 每个商品有过期日期和价格,每天可以卖一个商品,必须在过期前出售才能收益,求最大收益. 题解 贪心,按价格排 ...