精通Ajax——基础概念、核心技术与典型案例

副标题:无

作   者:冯曼菲编著

分类号:

ISBN:9787115173157

微信扫一扫,移动浏览光盘

简介

本书主要介绍Ajax技术的组成元素,涉及JavaScript、CSS、DOM、XMLHTTP和XML等内容,其中详细介绍了JavaScript客户端语言,它是Ajax技术的核心组成,是提高客户端性能不可缺少的元素。   全书共分为4大部分,前3部分通过一些详细的小实例,介绍了Ajax技术中的各个组成部分,并深入这些组成元素的技术内部,力求挖掘出更完整、更深入的Ajax技术。最后一部分通过几个大型的实例,让读者深入领会Ajax技术在实际网络项目中的优势,也让读者体验这种优势所带来的优越性能。   本书适用于初、中级网络开发者,对于高级开发人员也很有启发。没有接触过Ajax的入门者可以轻松地阅读本书,有过JavaScript开发经验的人学习本书,会发现Ajax利用JavaScript可大大提高客户端的性能。掌握Ajax技术是开发网络应用的必要技能。   全书几乎涵盖了目前Ajax涉及的所有技术,是一本学习Ajax开发技术的手册。

目录

目录
第1部分 Ajax入门
第1章 Ajax概述
1.1 什么是Ajax
1.1.1 Ajax概念的来历
1.1.2 Ajax的网站应用效果
1.1.3 Ajax技术的应用范围
1.2 Ajax:新的Web开发模式
1.2.1 传统的JavaScript模式
1.2.2 基于框架的不刷新模式
1.2.3 基于Ajax的Web 2.0模式
1.2.4 3种模式下的开发技术比较
1.3 Ajax中的真英雄
1.3.1 JavaSeript客户端脚本语言
1.3.2 XMLHttpRequest数据交换对象
1.3.3 级联样式表技术(CSS)
1.3.4 网页中的文档对象模型(DOM)
1.3.5 各组成元素之间的交互
1.4 Ajax的实现步骤
1.4.1 创建异步调用的对象
1.4.2 加载数据所在的服务器
1.4.3 异步调用服务器状态的变化
1.4.4 发出一个HTTP请求
1.4.5 处理异步获取的数据
1.4.6 Ajax异步调用的完整示例
1.5 Ajax的缺点
第2部分 JavaScript精讲
第2章 JavaScript语言基础
2.1 JavaScript概述
2.1.1 JavaScript、Jscript与ECMAScript
2.1.2 不同浏览器对JavaScript的支持
2.1.3 JavaScript在Ajax中的作用
2.2 JavaScript在HTML中的使用
2.2.1 在<script></script>中的使用
2.2.2 代码屏蔽
2.2.3 在单独文件中使用
2.2.4 作为属性值使用
2.3 JavaScript编辑和调试工具
2.3.1 编辑工具JavaScript Editor简介
2.3.2 使用JavaScript Editor创建Ajax代码
2.3.3 使用浏览器调试JavaScript程序
2.4 JavaScript基本语法规则
2.4.1 执行顺序
2.4.2 大小写敏感
2.4.3 空白符与换行符
2.4.4 语句与分隔符
2.4.5 块
2.4.6 注释
2.5 JavaScript保留字
2.6 错误与调试
2.6.1 语法错误
2.6.2 逻辑错误
第3章 JavaScript数据类型和变量
3.1 简单数据类型
3.1.1 普通数值型
3.1.2 特殊数值型
3.1.3 字符型
3.1.4 Bolean布尔型
3.2 特殊数据类型
3.2.1 无定义数据类型(undefined)
3.2.2 空值(null)
3.3 变量
3.3.1 类型规则
3.3.2 声明变量
3.3.3 变量命名
3.3.4 作用范围
3.3.5 基本类型与合成类型
3.3.6 无用存储单元的收集
3.3.7 作为属性的变量
3.4 类型转换
3.4.1 转换规则
3.4.2 提升基本数据为对象
3.4.3 显式类型转换
3.5 使用值与使用引用
3.5.1 使用值操作数据
3.5.2 使用引用操作数据
3.5.3 原始类型与引用类型
3.5.4 举例
3.5.5 字符串的特殊性
第4章 运算符与表达式
4.1 表达式
4.2 算术运算符
4.2.1 加号(+)的特殊含义
4.2.2 减号(-)的特殊含义
4.3 赋值运算符
4.4 比较运算符
4.4.1 条件语句中使用=符号
4.4.2 比较运算符的自动转换
4.5 逻辑运算符
4.6 位运算符
4.6.1 普通位运算符
4.6.2 位移运算符
4.7 其他运算符
4.7.1 递增与递减运算符
4.7.2 算术运算符与位运算符的结合使用
4.7.3 ?:运算符
4.7.4 字符串比较
4.7.5 逗号(,)运算符
4.7.6 void运算符
4.7.7 typeof运算符
4.7.8 对象运算符
4.8 运算符优先级
第5章 流程控制语句和常用函数
5.1 条件判断语句:if语句
5.1.1 简单if语句
5.1.2 if...else语句
5.1.3 else if语句的应用
5.1.4 if语句的嵌套
5.2 条件判断语句:switch语句
5.3 循环控制语句
5.3.1 while循环
5.3.2 do-while循环
5.3.3 for循环
5.3.4 循环控制:continue与break
5.4 函数的定义与调用
5.4 定义函数
5.4 函数调用
5.5 全局变量与局部变量
5.6 参数变量可变的函数
5.7 创建动态函数
5.8 JavaScript的系统函数
5.8.1 URI编码处理函数
5.8.2 数值处理函数
5.8.3 字符串编码处理函数
5.9 Function构造函数与函数直接量
第6章 JavaScript对象与数组
6.1 JavaScript对象
6.1.1 对象的创建
6.1.2 对象的方法
6.1.3 原型对象和继承
6.1.4 面向对象的JavaScript
6.1.5 构造函数与this关键字
6.2 处理日期和时间:Date对象
6.2.1 创建一个日期对象
6.2.2 从Date对象中提取信息
6.2.3 设置日期对象的值
6.2.4 进行日期计算
6.2.5 其他Date对象的方法
6.3 进行数学运算:Math对象
6.3.1 将一个小数四舍五入到指定位数
6.3.2 使用随机函数Math.random()
6.4 使用数组:Array对象
6.4.1 创建一个数组
6.4.2 使用数组元素
6.4.3 使用多维数组
6.4.4 使用数组的length属性
6.4.5 使用数组对象的方法
6.5 处理文本:String对象
6.5.1 确定字符串的长度
6.5.2 搜索和提取子字符串
6.5.3 替换和匹配字符串
6.5.4 字符串对象的其他方法
6.6 处理图像:Image对象
6.6.1 使用Image存储多个图像
6.6.2 使用Image[]保存并读取图像
6.7 对象的高级应用
6.7.1 处理地址栏信息:location对象
6.7.2 控制前进和后退:使用history对象
6.7.3 文档操作初步:document对象
6.7.4 使用with()语句简化对象访问
6.8 浏览器检测对象
6.8.1 用于浏览器的navigator对象
6.8.2 检测初步
6.9 检测内容
6.9.1 JavaScript检测
6.9.2 JavaScript版本检测
6.9.3 JavaScript对象检测
6.9.4 Java检测
6.9.5 插件检测
6.9.6 语言检测
6.10 用于可视化检测的Screen对象
6.10.1 获取浏览器窗口大小
6.10.2 设置屏幕对象的尺寸
6.10.3 有选择地显示图片
6.11 高级检测技术:示例代码
6.12 浏览器控制:浏览器按键模拟
第7章 字符串处理和正则表达式
7.1 字符串对象
7.1.1 字符串合并
7.1.2 URL字符串编码和译码
7.2 正则表达式及其作用
7.3 元字符“?”与“()”
7.3.1 用?表示可选项
7.3.2 用()表示子匹配
7.4 RegExp对象及属性
7.4.1 静态属性
7.4.2 实例属性
7.5 RegExp对象的方法
7.5.1 test方法
7.5.2 exec方法
7.5.3 compile方法
7.5.4 综合举例
7.6 String对象中的相关方法
7.6.1 match方法
7.6.2 search方法
7.6.3 replace方法
7.6.4 split方法
7.7 限定符与选择匹配符
7.7.1 用限定符指定连续出现的次数
7.7.2 贪婪匹配与非贪婪匹配
7.7.3 用选择匹配符进行匹配选择
7.8 分组组合与反向引用符
7.8.1 分组组合
7.8.2 反向引用
7.8.3 非捕获匹配
7.8.4 正向“预测先行”匹配
7.8.5 反向“预测先行”匹配
7.9 特殊字符与字符匹配符
7.9.1 特殊字符
7.9.2 字符匹配符
7.10 定位符与原义字符
7.10.1 用^匹配目标字符串的开始位置
7.10.2 用$匹配目标字符串的结尾位置
7.10.3 用\b匹配一个字边界
7.10.4 用\B匹配非字边界
7.10.5 对特殊字符进行转义
7.11 实用举例
7.11.1 普通字符匹配
7.11.2 限制表单输入的内容
7.11.3 去除重复字符
7.11.4 从URL中提取文件名
7.11.5 匹配口地址
第8章 JavaScript的事件处理机制
8.1 事件与事件处理概述
8.1.1 事件与事件名称
8.1.2 事件应用
8.2 基本事件模型
8.2.1 XHTML中的事件绑定
8.2.2 使用JavaScript绑定事件处理器
8.2.3 事件处理器的作用域
8.2.4 事件处理器的返回值
8.2.5 手动触发事件
8.3 IE 4+事件模型
8.3.1 绑定处理器至对象
8.3.2 Event对象
8.3.3 事件流
8.4 DOM2事件模型
8.4.1 绑定处理器至对象
8.4.2 Event对象
8.4.3 鼠标事件
8.4.4 取消默认动作
8.4.5 创建事件
8.5 接收键盘输入
8.5.1 使用keyPress事件
8.5.2 在Netscape中读取按键
8.5.3 在IE中读取按键
8.6 鼠标感应
8.6.1 弹出警告框
8.6.2 渐显图片
8.6.3 禁用鼠标右键
第9章 JavaScript的特效应用
9.1 日期时间设计
9.1.1 显示当前时间
9.1.2 显示当前日期和星期
9.1.3 同时显示日期、时间和星期
9.1.4 分时段问候
9.1.5 显示世界不同地区的当前时间
9.1.6 总是悬浮的时钟
9.2 计算器设计
9.2.1 简单的加减乘除运算
9.2.2 能进行四则混合运算的计算器
9.3 打字效果设计
9.4 随页面刷新更换页面背景
9.5 下拉菜单
9.5.1 基本应用
9.5.2 改进
9.5.3 渐显效果
9.6 DHTML菜单
9.6.1 模拟系统菜单
9.6.2 远程控制菜单
9.6.3 滑动菜单
9.7 常见菜单样式举例
9.7.1 弹出式菜单
9.7.2 浮动菜单
9.7.3 树型导航式菜单
第3部分 Ajax核心技术
第10章 Ajax的异步核心:XMLHttpRequest
10.1 XMLHttpRequest介绍
10.1.1 XMLHttpRequest概述
10.1.2 XMLHttpRequest实现机制
10.2 Ajax异步请求XMLHTTP的主要方法
10.2.1 加载服务器的方法Open
10.2.2 发送请求的方法Send
10.2.3 异步对象的其他方法
10.2.4 方法使用实例
10.3 Ajax中异步请求的主要属性
10.4 异步请求的主要事件
10.5 Ajax异步请求应用范例
10.5.1 Ajax返回字符串数据
10.5.2 Ajax读取XML类型数据
10.5.3 Ajax提交数据更新服务器内容
第11章 Ajax的基础架构:DOM模型
11.1 认识DOM
11.1.1 什么是DOM
11.1.2 DOM的由来
11.1.3 DOM在Ajax中的作用
11.2 DOM中的元素属性
11.2.1 DOM中数据的标准名称
11.2.2 用图例认识DOM中元素的属性
11.3 处理DOM中的节点
11.3.1 直接引用节点
11.3.2 间接引用节点
11.3.3 获取节点信息
11.3.4 处理属性节点
11.3.5 处理文本节点
11.3.6 因浏览器而异的空白节点
11.3.7 使用innerHTML改变节点的内容
11.4 改变文档的层次结构
11.4.1 使用document.createElement方法创建元素节点
11.4.2 使用document.createTextNode方法创建文本节点
11.4.3 使用appendChild方法添加节点
11.4.4 使用insertBefore方法插入子节点
11.4.5 使用replaceChild方法取代子节点
11.4.6 使用cloneNode方法复制节点
11.4.7 使用removeChild方法删除子节点
11.5 表格操作
11.5.1 表格操作概述
11.5.2 DOM1(DHTML)中表格对象的结构
11.5.3 创建一个表格对象
11.5.4 添加一行
11.5.5 添加单元格
11.5.6 引用单元格
11.5.7 使用单元格对象
11.5.8 删除行和单元格
11.5.9 交换两行的位置
11.5.10 交换两个单元格的位置
11.5.11 生成表格的其他方法
11.6 完整的Ajax调用DOM的实例
第12章 Ajax的外观设计:CSS样式表
12.1 CSS在Ajax中的作用
12.2 CSS样式表的结构
12.2.1 为页面引入CSS样式的方法
12.2.2 CSS的结构规则
12.3 深入了解CSS样式
12.3.1 CSS对字体的设置
12.3.2 CSS对背景的设置
12.3.3 CSS对文本的设置
12.3.4 CSS对布局的设置
12.4 CSS的设计工具TopStyle
12.5 JavaScript对CSS的调用
12.5.1 通过style对象改变节点的CSS
12.5.2 使用className属性指定节点样式
12.6 CSS的应用
12.6.1 使用标记选择器
12.6.2 使用类型选择器
12.6.3 使用id选择器
12.6.4 使用层次选择器
12.6.5 继承
12.6.6 样式应用就近原则
12.6.7 认识CSS中的盒模型
12.6.8 设计合理的CSS结构
12.6.9 用CSS滤镜制作发光效果的字体
12.6.10 用CSS滤镜演示字体的投影效果
12.7 Ajax调用CSS高级应用范例
12.7.1 使用Ajax动态改变局部元素样式
12.7.2 使用Ajax+CSS实现动态菜单效果
第13章 Ajax通信的数据载体——XML语言
13.1 认识XML
13.1.1 XML规范性
13.1.2 XML有效性
13.1.3 XML在Ajax中的作用
13.2 显示XML
13.2.1 使用XSLT将XML转换为HTML
13.2.2 XML与XHTML的结合
13.3 DOM与XML
13.3.1 Internet Explorer浏览器中的应用
13.3.2 Mozilla浏览器中的应用
13.4 IE XML数据岛
13.4.1 格式化输出
13.4.2 动态增删记录
13.5 一个RSS阅读器的例子——深入了解XML的应用
第14章 Ajax的服务器端编程
14.1 服务器端程序在Ajax中的角色
14.1.1 服务器端和客户端的输入/输出
14.1.2 Ajax技术的特点
14.1.3 Ajax传递参数的方法
14.1.4 Ajax也能设计接口
14.2 实现Ajax效果的级联菜单
14.2.1 设计数据库
14.2.2 服务器端处理文件
14.2.3 主界面和主调用程序
14.3 实现Ajax翻页效果
14.3.1 设计数据库
14.3.2 客户端分页显示的界面设计
14.3.3 分页显示需要的样式
14.3.4 使用Ajax实现客户端内容更新
14.3.5 通过ASP.NET控件直接得到HTML代码
14.3.6 后台分页函数的设计
14.3.7 关键字查询功能
14.3.8 Ajax实现的最终分页效果
第4部分 流行框架应用
第15章 Ajax组件使用范例
15.1 dojo组件的应用
15.1.1 dojo组件简介
15.1.2 在项目中添加dojo组件
15.1.3 使用dojo组件实现卷帘效果的div隐藏
15.2 OpenRico框架的应用
15.2.1 0penRico框架简介
15.2.2 将OpenRico框架加入到项目中
15.2.3 使用Open Rico实现可拖曳的层
15.2.4 使用Open Rico实现动态调色板
15.3 AjaxCaller框架的应用
15.3.1 AjaxCaller框架简介
15.3.2 使用AjaxCaller实现简单的定时任务
15.4 Microsoft提供的Ajax框架
第16章 ASP.NET Ajax开发
16.1 ASP.NET Ajax概述
16.1.1 ASP.NET Ajax的优势
16.1.2 ASP.NET Ajax的组成
16.1.3 一个最简单的ASP.NET Ajax实例
16.2 留言板概述
16.2.1 留言板程序所需要解决的问题
16.2.2 传统留言板的缺点
16.2.3 使用Ajax技术的好处
16.2.4 基本原理分析
16.3 数据库设计
16.3.1 数据库设计基本原理
16.3.2 数据表设计
16.3.3 配置存取ASP.NET服务的数据库
16.4 客户端程序设计
16.4.1 基本原理分析
16.4.2 用户注册页面
16.4.3 具备关机效果的用户登录页面
16.4.4 发表留言页面
16.4.5 留言板主页面
16.4.6 留言回复页面
16.4.7 留言板的短消息界面
16.4.8 用户定制界面
16.4.9 配置客户端启用服务
16.5 服务器端程序设计
16.5.1 回复消息时的数据库处理
16.5.2 短消息发送和获取的处理
16.5.3 数据库连接工具类
第17章 GWT框架开发
17.1 GWT概述
17.1.1 什么是GWT
17.1.2 GWT的优势
17.1.3 GWT技术架构
17.2 搭建GWT开发环境
17.2.1 GWT的下载
17.2.2 GWT的安装
17.3 开发GWT的程序
17.3.1 第一个GWT程序预览
17.3.2 创建GWT目录结构
17.3.3 创建UI界面
17.4 运行、测试和部署GWT程序
17.4.1 开发测试环境——宿主模式
17.4.2 发布应用——Web模式
17.4.3 使用Eclispe开发GWT
17.4.4 调试GWT程序
17.5 示例程序——个人所得税计算器
17.5.1 程序的界面效果
17.5.2 创建界面UI
17.5.3 使界面变得更漂亮
17.5.4 开发GWT应用的一般步骤
17.6 本章小结
第18章 GWT高级应用
18.1 常用的GWT组件
18.2 常用的布局面板
18.3 开发Ajax应用
18.3.1 创建XMLHttpRequest请求
18.3.2 示例程序——读取XML文件
18.4 解决浏览器历史记录问题
18.4.1 注册历史记录事件
18.4.2 示例程序——使用历史记录
18.5 GWT的RPC开发
18.5.1 什么是RPC
18.5.2 RPC技术架构图
18.5.3 定义服务
18.5.4 服务器端实现
18.5.5 客户端实现
18.5.6 调用RPC
18.6 本章小结
第5部分 典型案例
第19章 拖曳方式定制个性化主页
19.1 系统概述
19.1.1 系统目标:模仿Google ig
19.1.2 系统预览
19.1.3 系统构架
19.2 用户登录模块
19.2.1 原理分析
19.2.2 客户端代码
19.2.3 处理服务请求
19.2.4 服务器端代码
19.2.5 连接数据库
19.3 小窗口初始化模块
19.3.1 原理分析
19.3.2 数据库设计
19.3.3 访问数据库的实体类
19.3.4 父类代码的实现
19.3.5 创建欢迎小窗口
19.3.6 创建新闻RSS小窗口
19.3.7 创建书签小窗口
19.4 个性化主页模块
19.4.1 布局显示原理分析
19.4.2 数据库设计
19.4.3 创建访问数据库实体类
19.4.4 客户端代码
19.4.5 布局设置原理分析
19.4.6 关闭窗口自动保存布局
19.4.7 拖曳窗口自动保存布局
19.4.8 服务器端代码
19.5 拖曳原理分析
19.5.1 拖曳原理分析
19.5.2 释放原理分析
19.5.3 通用的拖放类
第20章 上传文件显示进度条
20.1 上传文件概述
20.1.1 上传文件的表单概述
20.1.2 上传文件后的服务器端处理
20.1.3 使用Apache的FlieUpload
20.1.4 使用Session记录上传进度
20.2 客户端实现
20.2.1 客户端原理分析
20.2.2 客户端代码
20.2.3 客户端请求处理
20.3 服务器端实现
20.3.1 服务器端原理分析
20.3.2 上传文件处理过程
20.3.3 获取上传信息
20.3.4 创建监听器类
20.3.5 注册监听器类
第21章 滑动显示分页
21.1 滑动显示分页概述
21.1.1 传统的分页显示
21.1.2 滑动分页显示
21.1.3 滑块基本原理
21.2 客户端实现
21.2.1 客户端基本原理
21.2.2 客户端页面代码
21.2.3 JavaScript代码分析
21.3 服务器端代码实现
21.3.1 服务器端请求处理
21.3.2 创建数据实体类
21.3.3 数据库设计
第22章 仿Windows关机效果
22.1 基本原理分析
22.1.1 Windows关机效果分析
22.1.2 网页中实现关机效果分析
22.2 代码实现
22.2.1 客户端代码
22.2.2 客户端脚本
22.2.3 封装lightbox类
22.3 服务器端代码
第23章 动态获取数据的树状菜单
23.1 树状菜单概述
23.1.1 什么是树状菜单
23.1.2 使用无序列表标记(ul)
23.1.3 使用CSS控制外观
23.1.4 展开和折叠涉及的关键技术
23.2 实现树状菜单的两种方式
23.2.1 完全在客户端实现
23.2.2 完全由服务器端实现
23.2.3 基于Ajax的实现
23.3 设计树状菜单的数据结构
23.3.1 设计树节点接口类
23.3.2 实现树结构的数据库设计
23.3.3 最终树结构实现类
23.3.4 服务端的数据处理
23.3.5 静态树状菜单的实现
23.4 动态获取数据的树状菜单
23.4.1 什么时候需要动态获取数据
23.4.2 服务器端的代码设计
23.4.3 创建获取数据的方法
23.4.4 处理取回数据的方法
23.4.5 服务器端的请求处理方法
第24章 RSS阅读器
24.1 RSS概述
24.1.1 什么是RSS
24.1.2 一个简单的RSS 2.0示例
24.1.3 <channel>元素说明
24.1.4 <item>元素说明
24.2 阅读RSS模块程序设计
24.2.1 客户端原理分析
24.2.2 客户端代码设计
24.2.3 创建RSSReader类
24.2.4 服务器端代码设计
24.2.5 创建LoadRSS类
24.3 添加RSS模块程序设计
24.3.1 客户端原理分析
24.3.2 客户端代码设计
24.3.3 服务器端代码设计
24.3.4 数据库设计
24.3.5 数据库访问类
第25章 搜索提示(Suggest)
25.1 搜索提示概述
25.1.1 Google Suggest介绍
25.1.2 搜索提示所带来的好处
25.1.3 基本原理分析
25.2 客户端代码
25.2.1 客户端原理分析
25.2.2 创建请求
25.2.3 处理返回数据
25.3 服务器端代码
25.3.1 服务器端原理分析
25.3.2 处理服务请求
25.3.3 数据库设计
第26章 基于Ajax的相册
26.1 基本原理分析
26.1.1 界面设计分析
26.1.2 CSS设计分析
26.1.3 图片放大原理分析
26.1.4 动态更换皮肤
26.2 Ajax程序设计
26.2.1 原理分析
26.2.2 创建XMLHttpRequest对象
26.2.3 发送请求
26.2.4 处理返回数据
26.3 服务器端程序设计
26.3.1 处理服务请求
26.3.2 创建实体访问类
26.3.3 数据库设计
第27章 基于Ajax的聊天室程序
27.1 聊天室概述
27.1.1 聊天室程序所需要解决的问题
27.1.2 传统聊天室的缺点
27.1.3 使用Ajax技术的好处
27.1.4 基本原理分析
27.2 数据库设计
27.2.1 数据库设计基本原理
27.2.2 数据表设计
27.2.3 创建表所对应的实体类
27.3 客户端程序设计
27.3.1 基本原理分析
27.3.2 选择聊天室页面
27.3.3 聊天室主页面
27.3.4 调用初始化方法
27.3.5 获得消息数据处理
27.3.6 发送消息数据处理
27.4 服务器端程序设计
27.4.1 刷新时获得消息请求的处理
27.4.2 发送消息请求的处理
27.4.3 数据库连接工具类

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

精通Ajax——基础概念、核心技术与典型案例
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    亲爱的云图用户,
    光盘内的文件都可以直接点击浏览哦

    无需下载,在线查阅资料!

    loading icon