artDialog4.0.5

2011-08-22 11:54:36 haiwei_sun 阅读数 4109  收藏 更多

分类专栏: jquery
 

下载

Google Code 项目主页

最新版本:http://code.google.com/p/artdialog/downloads/list

(如果因为中国网络特殊原因不能访问Google Code请自备工具翻墙)

文档

应用到你的项目

在页面head引入artDialog,注意如果文件带有skin参数将会无阻塞的方式自动加载对应的皮肤css文件,当然你仍然可以使用传统方式引用“skins/”目录下的css文件,二者选其一。

<script src="artDialog.js?skin=default"></script>

如果项目采用jQuery作为框架,则引用jQuery artDialog版本:

<script src="jquery.artDialog.js?skin=default"></script>

如果需要在iframe应用下提供 更好的支持 ,需要加上:

<script src="artDialog.iframeTools.js"></script>

配置参数

名称 类型 默认值 描述
内容
title String '消息' 标题内容
content String null 消息内容。
1、如果内容类型是Object还需要tmpl参数配合 
2、如果传入的是HTMLElement类型,如果是隐藏元素会给其设置display:block以显示该元素,其他属性与绑定的事件都会完整保留,对话框关闭后此元素又将恢复原来的display属性,并且重新插入原文档所在位置
3、如果没有设定content的值则会有loading的动画
HTMLElement
Object
按钮
yesFn Function null 确定按钮回调函数。
函数如果返回false将阻止对话框关闭;函数this指针指向内部api;如果传入true表示只显示有关闭功能的按钮
Boolean
noFn Function null 取消按钮回调函数。
函数如果返回false将阻止对话框关闭;函数this指针指向内部api;如果传入true表示只显示有关闭功能的按钮
对话框标题栏的关闭按钮其实就是取消按钮,只不过视觉不同罢了,点击同样触发noFn事件
Boolean
yesText String '确定' "确定按钮"文字
noText String '取消' "取消按钮"文字
button Array null 自定义按钮。
配置参数成员:

name —— 按钮名称
callback —— 按下后执行的函数
focus —— 是否聚焦点
disabled —— 是否标记按钮为不可用状态(后续可使用控制接口让其恢复可用状态)
示例:

参数如:[{name: '登录', callback: function () {}}, {name: '取消'}] 。注意点击按钮默认会触发按钮关闭动作,需要阻止触发关闭请让回调函数返回false

尺寸
width Number 'auto' 设置消息内容宽度,可以带单位。一般不需要设置此,对话框框架会自己适应内容。
如果设置为百分值单位,将会以根据浏览器可视范围作为基准,此时如果浏览器窗口大小被改变其也会进行相应的调整
String
height Number 'auto' 设置消息内容高度,可以带单位。不建议设置此,而应该让内容自己撑开高度。
如果设置为百分值单位,将会以根据浏览器可视范围作为基准,此时如果浏览器窗口大小被改变其也会进行相应的调整
String
位置
fixed Boolean false 开启静止定位。静止定位是css2.1的一个属性,它静止在浏览器某个地方不动,也不受滚动条拖动影响。(artDialog支持IE6 fixed)
follow HTMLElement null 让对话框依附在指定元素附近。
可传入元素ID名称,注意ID名称需要以“#”号作为前缀
String
left Number '50%' X轴的坐标。
1、如果开启了fixed参数则以浏览器视口为基准;
2、可以使用'0%' ~ '100%'作为相对坐标,如果浏览器窗口大小被改变其也会进行相应的调整
String
top Number 'goldenRatio' Y轴的坐标。
1、如果开启了fixed参数则以浏览器视口为基准;
2、可以使用'0%' ~ '100%'、''goldenRatio''作为相对坐标,如果浏览器窗口大小被改变其也会进行相应的调整,其中'goldenRatio'表示为黄金比例垂直居中,绝对居中请使用'50%'
String
视觉
lock Boolean false 开启锁屏。
中断用户对话框之外的交互,用于显示非常重要的操作/消息,所以不建议频繁使用它
background String '#000' 锁屏遮罩颜色
opacity Number 0.7 锁屏遮罩透明度
icon String null 定义消息图标。可定义“skins/icons/”目录下的图标名作为参数名(不包含后缀名)
padding String '20px 25px' 内容与边界填充边距(即css padding)
交互
time Number null 设置对话框显示时间。以秒为单位
resize Boolean true 是否允许用户调节尺寸
drag Boolean true 是否允许用户拖动位置
esc Boolean true 是否允许用户按Esc键关闭对话框
高级
id String null 设定对话框唯一标识。用途:
1、防止重复弹出
2、可后续使用art.dialog.list[youID]获取控制接口
Number
tmpl String null 启用模板引擎拼接消息内容,还需要与content参数传入字面量对象才能生效,详情见示例
zIndex Number 1987 重置全局zIndex初始值。
用来改变对话框叠加高度。比如有时候配合外部浮动层UI组件,但是它们可能默认zIndex没有artDialog高,导致无法浮动到artDialog之上,这个时候你就可以给对话框指定一个较小的zIndex值。
请注意这是一个会影响到全局的配置,后续出现的对话框叠加高度将重新按此累加。
initFn Function null 对话框弹出后执行的函数
closeFn Function null 对话框关闭前执行的函数。函数如果返回false将阻止对话框关闭。
请注意这不是关闭按钮的回调函数,无论何种方式关闭对话框,closeFn都将执行。
show Boolean true 是否显示对话框

配置全局默认设置:

  1.  
    (function (config) {
  2.  
    config['lock'] = true;
  3.  
    config['fixed'] = true;
  4.  
    config['yesText'] = 'yes';
  5.  
    config['noText'] = 'no';
  6.  
    // [more..]
  7.  
    })(art.dialog.defaults);

配置参数范例

内容 [content]

1. 传入字符串

  1.  
    art.dialog({
  2.  
    content: '我支持HTML'
  3.  
    });

运行»

2. 传入HTMLElement

备注:1、元素不是复制而是完整移动到对话框中,所以原有的事件与属性都将会保留 2、如果隐藏元素被传入到对话框,会设置display:block属性显示该元素 3、对话框关闭的时候元素将恢复到原来在页面的位置,style display属性也将恢复

  1.  
    art.dialog({
  2.  
    content: document.getElementById('demoCode_content_DOM'),
  3.  
    id: 'EF893L'
  4.  
    });

运行»

3. 高级应用:传入Object并使用“tmpl”模板参数生成内容

备注:拼接字符串是一个比较无趣的活儿,而artDialog内部使用一个微型模板引擎解析自身UI框架,你可以通过tmp参数继续使用它格式化内容。模板支持原生的javascript语法,可进行条件判断。推荐你尝试使用type="text/tmpl"的script标签存放模板,如:

  1.  
    var tmpl = document.getElementById('tmpl_demoCode_content').innerHTML;
  2.  
    art.dialog({
  3.  
    content: {
  4.  
    code: 0,
  5.  
    users: ['糖饼', '月月鸟', '水水', '丽丽', '花花', '大叔'],
  6.  
    me: '糖饼',
  7.  
    web: 'http://www.planeart.cn'
  8.  
    },
  9.  
    tmpl: tmpl
  10.  
    });

运行»

标题 [title]

  1.  
    art.dialog({
  2.  
    title: 'hello world!'
  3.  
    });

运行»

确定取消按钮 [yesFn & noFn]

备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭

  1.  
    art.dialog({
  2.  
    content: '如果定义了回调函数才会出现相应的按钮',
  3.  
    yesFn: function () {
  4.  
    this.title('3秒后自动关闭').time(3);
  5.  
    return false;
  6.  
    },
  7.  
    noText: '关闭',
  8.  
    noFn: true //为true等价于function(){}
  9.  
    });

运行»

自定义按钮 [button]

备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭;button参数对应的控制接口名称也是"button"

  1.  
    art.dialog({
  2.  
    id: 'testID',
  3.  
    content: 'hello world!',
  4.  
    button: [
  5.  
    {
  6.  
    name: '同意',
  7.  
    callback: function () {
  8.  
    this.content('你同意了').time(2);
  9.  
    return false;
  10.  
    },
  11.  
    focus: true
  12.  
    },
  13.  
    {
  14.  
    name: '不同意',
  15.  
    callback: function () {
  16.  
    alert('你不同意')
  17.  
    }
  18.  
    },
  19.  
    {
  20.  
    name: '无效按钮',
  21.  
    disabled: true
  22.  
    },
  23.  
    {
  24.  
    name: '关闭我'
  25.  
    }
  26.  
    ]
  27.  
    });

运行»

定时关闭的消息 [time]

  1.  
    art.dialog({
  2.  
    time: 2,
  3.  
    content: '两秒后关闭'
  4.  
    });

运行»

防止重复弹出 [id]

  1.  
    art.dialog({
  2.  
    id: 'testID',
  3.  
    content: '再次点击运行看看'
  4.  
    });
  5.  
    art.dialog({id: 'testID'}).title('3秒后关闭').time(3);

运行»

定义消息图标 [icon]

内置图标:alert、succeed、error、confirm

  1.  
    art.dialog({
  2.  
    icon: 'succeed',
  3.  
    content: '我可以定义消息图标哦'
  4.  
    });

运行»

内容与边界填充边距 [padding]

有时候并不需要默认的内容填充边距,如展示图片与视频

  1.  
    art.dialog({
  2.  
    padding: 0,
  3.  
    title: false,
  4.  
    content: '<img src="./images/photo.jpg" width="379" height="500" />',
  5.  
    lock: true
  6.  
    });

运行»

锁屏 [lock & background & opacity]

  1.  
    art.dialog({
  2.  
    lock: true,
  3.  
    background: '#600', // 背景色
  4.  
    opacity: 0.7, // 透明度
  5.  
    content: '中断用户在对话框以外的交互,展示重要操作与消息',
  6.  
    icon: 'error',
  7.  
    yesFn: function () {
  8.  
    art.dialog({content: '再来一个锁屏', lock: true});
  9.  
    return false;
  10.  
    },
  11.  
    noFn: true
  12.  
    });

运行»

跟随元素 [follw]

1、标准形式

  1.  
    art.dialog({
  2.  
    follow: document.getElementById('followTestBtn'),
  3.  
    content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框'
  4.  
    });

运行»

2、使用简写形式 (已经绑定onclick事件,注意此返回值不再是对话框控制接口)

  1.  
    art('#demoCode_follow_a').dialog({
  2.  
    content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框'
  3.  
    });

元素触发  运行»

自定义坐标 [left & top]

  1.  
    art.dialog({
  2.  
    left: 100,
  3.  
    top: '60%',
  4.  
    content: '我改变坐标了'
  5.  
    });

运行»

创建一个右下角浮动的消息窗口

  1.  
    art.dialog({
  2.  
    id: 'msg',
  3.  
    title: '公告',
  4.  
    content: 'hello world!',
  5.  
    width: 320,
  6.  
    height: 240,
  7.  
    left: '100%',
  8.  
    top: '100%',
  9.  
    fixed: true,
  10.  
    drag: false,
  11.  
    resize: false
  12.  
    })

运行»

设置大小 [width & height]

  1.  
    art.dialog({
  2.  
    width: '20em',
  3.  
    height: 55,
  4.  
    content: '尺寸可以带单位'
  5.  
    });

运行»

创建一个全屏对话框

  1.  
    art.dialog({
  2.  
    width: '100%',
  3.  
    height: '100%',
  4.  
    left: '0%',
  5.  
    top: '0%',
  6.  
    fixed: true,
  7.  
    resize: false,
  8.  
    drag: false
  9.  
    })

运行»

静止定位 [fixed]

  1.  
    art.dialog({
  2.  
    fixed: true,
  3.  
    content: '请拖动滚动条查看'
  4.  
    });

运行»

不许拖拽 [drag & resize]

  1.  
    art.dialog({
  2.  
    drag: false,
  3.  
    resize: false,
  4.  
    content: '禁止拖拽'
  5.  
    });

运行»

控制接口

名称 描述
close() 关闭对话框
show() 显示对话框
hide() 隐藏对话框
title(value) 写入标题。无参数则返回标题容器元素
content(value) 向消息容器中写入内容。参数支持字符串、DOM对象,无参数则返回内容容器元素
button(arguments) 插入一个自定义按钮。
如:button({name: '登录', callback: function () {_form.submit();}) 更多用法请见范例文档
follow(element) 让对话框吸附到指定元素附近
position(left, top) 重新定位对话框
size(width, height) 重新设定对话框大小
lock() 锁屏
unlock() 解锁
time(val) 定时关闭(单位秒)

备注:控制接口返回值都是this,因此你可以使用链式编程风格。

控制接口范例

控制接口可以在对话框初始化后控制对话框,需要有一定的javascript基础,这里不做过多演示。

获取控制接口:直接引用控制接口

  1.  
    var dialog = art.dialog({
  2.  
    title: '我是对话框',
  3.  
    content: '我是初始化的内容'
  4.  
    });
  5.  
     
  6.  
    dialog.content('对话框内容被控制接口改变了').title('提示');

运行»

获取控制接口:使用对话框ID

  1.  
    art.dialog({
  2.  
    id: 'KDf435',
  3.  
    title: '警告',
  4.  
    content: '我是初始化的内容'
  5.  
    });
  6.  
     
  7.  
    art.dialog.list['KDf435'].content('对话框内容被控制接口改变了').time(2);

运行»

获取控制接口:this引用

  1.  
    art.dialog({
  2.  
    title: '警告',
  3.  
    content: '我是初始化的内容',
  4.  
    yesFn: function () {
  5.  
    this.content('你点了确定按钮').position('50%', null).lock().time(2);
  6.  
    return false;
  7.  
    },
  8.  
    initFn: function () {
  9.  
    this.content('对话框内容被控制接口改变了');
  10.  
    }
  11.  
    });

运行»

演示四

关闭页面所有对话框

  1.  
    var list = art.dialog.list;
  2.  
    for (var i in list) {
  3.  
    list[i].close();
  4.  
    };

运行»

按钮接口演示

备注:回调函数如果返回false将阻止对话框关闭

  1.  
    var dialog = art.dialog({
  2.  
    title: '警告',
  3.  
    content: '点击管理按钮将让删除按钮可用',
  4.  
    width: '20em',
  5.  
    button: [{
  6.  
    name: '管理',
  7.  
    callback: function () {
  8.  
    this.content('我更改了删除按钮').button({
  9.  
    name: '删除',
  10.  
    disabled: false
  11.  
    });
  12.  
    return false;
  13.  
    },
  14.  
    focus: true
  15.  
    }]
  16.  
    });
  17.  
     
  18.  
    dialog.button(
  19.  
    {
  20.  
    name: '删除',
  21.  
    callback: function () {
  22.  
    alert('remove')
  23.  
    },
  24.  
    disabled: true
  25.  
    }
  26.  
    )

运行»

改变关闭方式

  1.  
    art.dialog({
  2.  
    id: 'show-hide',
  3.  
    content: '关闭后阻止对话框被删除,只隐藏对话框',
  4.  
    closeFn: function () {
  5.  
    this.hide();
  6.  
    return false;
  7.  
    }
  8.  
    }).show();

运行»

AJAX高级应用:执行HTML片段中特殊script标签

HTML片段中的<script type="text/dialog"></script>标签包裹的javascript将会在对话框中执行,其this指向对话框控制接口,代码在闭包内执行,不会影响全局,这样可以进一步实现内容模块化。

(本例子使用了AJAX,需要在服务器上运行。可打开 ./ajaxContent/login.html 查看源码中的自定义脚本)

  1.  
    var dialog = art.dialog({id: 'N3690'});
  2.  
     
  3.  
    // jQuery ajax
  4.  
    $.ajax({
  5.  
    url: './ajaxContent/login.html',
  6.  
    success: function (data) {
  7.  
    dialog.content(data);
  8.  
    },
  9.  
    cache: false
  10.  
    });

运行»

扩展:iframe应用工具集

名称 描述
核心方法
art.dialog.parent 获取artDialog可用最高层window对象。这与直接使用window.top不同,它能排除artDialog对象不存在已经或者顶层页面为框架集的情况
这是iframe应用工具集中的核心方法,你可以用它来操作父页面对象(包括上面的对话框)
art.dialog.data(name, value) 跨框架数据共享写入接口。
框架与框架之间以及与主页面之间进行数据交换是非常头疼的事情,常规情况下你必须知道框架的名称才能进行数据交换,如果是在复杂的多层框架下操作简直就是噩梦。
而data方法就是为了解决这个问题,你完全不用管框架层级问题,它可以写入任何类型的数据,而做到各个页面之间数据共享。
art.dialog.data(name) 跨框架数据共享读取接口。指定name即返回数据,任何引用了artDialog的页面都有效
art.dialog.removeData(name) 跨框架数据共享删除接口。删除指定名称的数据,任何引用了artDialog的页面都有效
异步数据对话框
art.dialog.open(url, options, cache) 创建一个iframe页面
参数: 地址, 配置参数, 缓存开关(默认true)
art.dialog.open.api iframe页面获取open方法控制接口。 
(注意这个iframe中也必须引用artDialog脚本文件)
art.dialog.open.origin iframe页面获取open方法触发来源页面window对象。 
(注意这个iframe中也必须引用artDialog脚本文件)
art.dialog.close() iframe页面关闭open方法创建的对话框的快捷方式。
close方法等同于:

var api = art.dialog.open.api;
api && api.close();

(注意这个iframe中也必须引用artDialog脚本文件)

art.dialog.load(url, options, cache) Ajax加载内容
参数:地址, 配置参数, 缓存开关(默认true)
基础交互对话框
art.dialog.alert(content) 警告消息 (同时只允许一个alert)
参数: 内容
art.dialog.confirm(content, yesFn, noFn) 确认 (同时只允许一个confirm)
参数: 内容, 确定按钮回调函数, 取消按钮回调函数
art.dialog.prompt(content, yesFn, value) 提问 (同时只允许一个prompt)
参数: 内容, 确定按钮回调函数, 文本框默认值
art.dialog.tips(content, time) 短暂提示(同时只允许一个tips)
参数: 内容、显示时间(单位秒, 默认1.5)
自定义
art.dialog.through(options) 创建一个普通可穿越框架的对话框
不鼓励直接使用window.top这样的方式穿越,这样可能因为对话框触发页面重置导致其产生所有的对象在内存中被清空,而让对话框无法关闭,所以你应该用这个安全的方法创建自定义对话框。

框架集页面无法覆盖第三方元素,不过可以使用一个iframe套住框架集页面就可以正常使用,见下面演示文档。

扩展:iframe应用工具集范例

请新打开新页面查看范例:./iframeTop.html

转自: http://blog.csdn.net/helen_shw/article/details/6708057

artDialog4.0.5的更多相关文章

  1. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  2. ZAM 3D 制作3D动画字幕 用于Xaml导出

    原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...

  3. 微信小程序省市区选择器对接数据库

    前言,小程序本身是带有地区选着器的(网站:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html),由于自己开发的程序的数据是很 ...

  4. osg编译日志

    1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...

  5. artdialog4.1.7 中父页面给子页面传值

    artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...

  6. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  7. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  8. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  9. vue2.0实践的一些细节

    最近用vue2.0做了个活动.做完了回头发现,好像并没有太多的技术难点,而自己好像又做了比较久...只能说效率有待提升啊...简单总结了一些比较细节的点. 1.对于一些已知肯定会有数据的模块,先用一个 ...

随机推荐

  1. $.ajax中contentType: “application/json” 的用法

    不使用contentType: “application/json”则data可以是对象 $.ajax({ url: actionurl, type: "POST", datTyp ...

  2. day3-转自金角大王

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  3. 10种简单的Java性能优化(转)

    本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加入翻译小组.转载请见文末要求. 你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了 ...

  4. 使用Velero Restic快速完成云原生应用迁移至ACK集群

    本文记录使用Velero Restic快速完成云原生应用迁移至ACK集群的实践过程. 0. 实践步骤概览 (1)创建GKE集群(或自建Kubernetes集群)(2)在GKE集群上部署示例应用Jenk ...

  5. shell学习(23)- diff和patch

    diff命令可以生成两个文件之间的差异对比. (1) 先创建下列用于演示的文件.文件 1:version1.txt this is the original text line2 line3 line ...

  6. jQuery $.isNumeric vs. $.isNaN vs. isNaN

    在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字. 首先,jQuery.isNaN()在最新版本中已经被移除了(1.7之后),取而代之的是  jQuery.isNumeric ...

  7. OSS跨同城3AZ重磅发布,构造全面数据保护体系

    点击订阅新品发布会! 新产品.新版本.新技术.新功能.价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 OSS跨同城3AZ重磅发布 2019年7月3日15时,OSS跨同城3AZ重磅发布 ...

  8. JavaScriptBreak 语句 continue 语句

    break 语句用于跳出循环. continue 用于跳过循环中的一个迭代. Break 语句 我们已经在本教程之前的章节中见到过 break 语句.它用于跳出 switch() 语句. break ...

  9. 使用 Javascript 将二进制字符串转成数字

    使用 Javascript 将二进制字符串转成数字 Javascript 转成 数学太简单了. 原来 parseInt 还有这样的用法. function binaryAgent(str) { str ...

  10. Java练习 SDUT-1230_平方和与立方和

    平方和与立方和 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇 ...