artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口l 自适应内容artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它。它的消息容器甚至能够根据宽度让文本居中或居左对齐——这一切全是XHTML+CSS原生实现。l 完善的接口它的接口完善,可以轻易与外部程序配合使用。如异步写入消息、控制位置、尺寸、显示与隐藏、关闭等。l 细致的体验如果不是在输入状态,它支持Esc快捷键关闭;可指定在元素附近弹出,让操作更便捷;智能给按钮添加焦点;黄金比例垂直居中;超大响应区域特别为ipad等触屏设备优化;预先缓存皮肤图片更快响应……l 跨平台兼容兼容:IE6+、Firefox、Chrome、Safari、Opera以及iPad等移动设备。并且IE6下也能支持现代浏览器的静止定位(fixed)、、alpha通道png背景。下载地址:http://code.google.com/p/artdialog/downloads/list
配置参数
content: {消息内容,支持HTML}
title: {标题.默认:'提示'}
lock: {是否锁定屏幕. 默认:false}
width: {宽度,支持em等单位. 默认:'auto'}
height: {高度,支持em等单位. 默认:'auto'}
url: {iframe地址,存在content参数时候,此参数无效}
x: {x坐标,可以使用关键字,如:left/right/center. 默认:'center'}
y: {y坐标,可以使用关键字,如:top/bottom/center. 默认:'center'(并非绝对垂直居中,而是使用的黄 金比例)}
fixed: {是否启用静止定位. 默认:false}
time: {多少秒自动关闭}
style: {对话框风格扩展参数,写入自定义className,详情见皮肤css文件的定义,多个用空格隔开}
yesText: {确定按钮文本. 默认:'确定'}
noText: {取消按钮文本. 默认:'取消'}
yesClose: {点击确定按钮是否同时关闭对话框. 默认:true}
id: {给对话框定义id,对话框未关闭就不再会有同名对话框弹出. 例如定义id为'my2',则内容容器id为'my2Content'}
API文档
控制接口
自带的扩展方法
引用js文件,注意引用顺序:
传统参数版art.dialog art.dialog(content,ok,cancel),参数:弹出框中的内容,点击“确定”按钮触发的事件,点击“取消”按钮触发的事件
art.dialog("artDialog", function () {
alert("点击了确定按钮");
}, function () {
alert("点击了取消按钮");
});
字面量参数版art.dialog
content不仅仅可以是普通字符串,也可以是一个隐藏的页面。
$("#btnArtDialog2").click(function () {
art.dialog({
title: "蝈蝈",
content: "字面量传参",
icon: "succeed",//以“skins/icons/”目录下的图标名作为参数名(不包含后缀名)
lock: true,//是否锁定屏幕,默认是false
fixed: true,//静止在浏览器某个地方不动,不受滚动条拖动影响
time: 3,//如果有cancel方法的话会调用cancel方法
okVal: "ok",
ok: function () { alert("ok了"); },
cancelVal: "cancel",
cancel: function () { alert("cancel了"); }
});
});
function ShowAlertDiv() {
art.dialog({
title: "提示框",
content: $("#alertDiv")[0],
icon: "succeed",
lock: true,
fixed: true,
okVal: "ok",
ok:function() {alert("ok了!");},
cancelVal: "cancel",
cancel:function() {alert("cancel了!");}
});
}
function Trigger() {
alert("弹出页中的按钮触发了点击事件!");
}
follow属性的使用
$(document).ready(function () {
//点击按钮时能弹出有跟随效果的提示框
//效果同简写形式的follow效果一样
$("#btnArtDialog3").click(function () {
art.dialog({
follow: document.getElementById('btnArtDialog3'),
title: "跟随效果",
content: "follow属性"
});
});
//不用点击按钮就会弹出有跟随效果的提示框
art.dialog({
follow: document.getElementById('btnArtDialog3'),
title: "跟随效果",
content:"follow属性"
});
//点击按钮的时候会出现有跟随效果的提示框
art('#btnArtDialog3').dialog({
title: "跟随效果",
content: "简写形式的follow属性"
});
});
art.dialog.alert(content,ok),参数:弹出框的内容,用户点击“确定”按钮后执行的回发事件
$("#btnAlert").click(function () {
art.dialog.alert("alert弹出框", function () {
art.dialog.alert("点击确定按钮触发的事件");
});
});
art.dialog.confirm(content,ok,cancel),参数:弹出框中的内容, 点击“确定”按钮触发的事件,点击“取消”按钮触发的事件
$("#btnConfirm").click(function () {
art.dialog.confirm('confirm弹出框', function () {
art.dialog.alert("点击确定按钮触发的事件");
}, function () {
art.dialog.alert("点击取消按钮触发的事件");
});
});
art.dialog.prompt(content,ok(data),defaultValue),参数:弹出框中的内容, 点击“确定”按钮触发的事件,data表示用户输入的内容,输入框的中默认值
function PromptFunc() {
art.dialog.prompt('prompt弹出框', function (data) {
art.dialog.alert("data=" + data);
}, "请输入");
}
art.dialog.notice()
function NoticeFunc() {
art.dialog.notice({
title: '蝈蝈',
// 必须指定一个像素宽度值或者百分比,
//否则浏览器窗口改变可能导致artDialog收缩
width: 220,
content: '尊敬的顾客朋友,您IQ卡余额不足10元,请及时充值',
icon: 'face-sad',
time: 5
});
}
art.dialog.open(url,options,cache),参数: 地址, 配置参数, 缓存开关(默认true)
function OpenFunc() {
art.dialog.open("Login.aspx", {
title: "登录",
lock: true,
width: 400,
height: 300
},true);
}
art.dialog.data(key,value),参数:键、值
function SetValue() {
//设置键值对
art.dialog.data('test', $('#demoInput').val());
}
function GetValueFunc() {
//根据键的名称获取对应的值
var data = art.dialog.data('test');
art.dialog.alert("data=" + data);
}
跨页面传值,art.dialog.open与art.dialog.data组合使用 artDialog.aspx与iframeA.htm互相传值
//artDialog.aspx中的方法
function OpenAndDataFunc() {
art.dialog.data('test', $('#demoInput').val());
var dialog = art.dialog.open('iframeA.htm', {
title: "iframeA",
lock: true,
width: 400,
height: 300,
close: function () {
//获取由iframeA.htm页面传递过来的数据
var data = art.dialog.data('fromIFrameA');
art.dialog.alert("data=" + data);
}
}, false);
//将弹出框设为键值对形式,在iframeA.htm中获取到该弹出框后,
//可以将其关闭
art.dialog.data("iFrameADialog", dialog);
}
//iframeA.htm中的代码
if (art.dialog.data('test')) {
// 获取由artDialog.aspx页面传递过来的数据
document.getElementById('aInput').value =
art.dialog.data('test');
};
document.getElementById('btnSetValue').onclick = function () {
alert($('#aInput').val());
art.dialog.data('fromIFrameA', $('#aInput').val());
};
// 关闭并返回数据到主页面artDialog.aspx
document.getElementById('exit').onclick = function () {
var origin = art.dialog.open.origin;//来源页面
//获取来源页面第二种写法
//var origin = artDialog.open.origin;
var aValue = document.getElementById('aInput').value;
var input = origin.document.getElementById('demoInput');
var iFrameADialog = art.dialog.data('iFrameADialog ');
//给来源页面中id=demoInput的控件赋值
input.value = aValue;
//选中id=demoInput的控件
input.select();
//关闭弹出框的两种方式
//art.dialog.close();//【方法一】
iFrameADialog .close();//【方法二】
};
配置参数演示内容[content]1. 传入字符串
art.dialog({ content: '我支持HTML'});
2. 传入HTMLElement备注:1、元素不是复制而是完整移动到对话框中,所以原有的事件与属性都将会保留2、如果隐藏元素被传入到对话框,会设置display:block属性显示该元素3、对话框关闭的时候元素将恢复到原来在页面的位置,style display属性也将恢复
art.dialog({ content: document.getElementById('demoCode_content_DOM'), id: 'EF893L'});
标题[title]
art.dialog({ title: 'hello world!'});
确定取消按钮[ok & cancel]备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭
art.dialog({ content: '如果定义了回调函数才会出现相应的按钮', ok: function() { this.title('3秒后自动关闭').time(3); returnfalse; }, cancelVal: '关闭', cancel: true//为true等价于function(){}});
自定义按钮[button]备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭;button参数对应的扩展方法名称也是"button"
art.dialog({ id: 'testID', content: 'hello world!', button: [ { name: '同意', callback: function() { this.content('你同意了').time(2); returnfalse; }, focus: true }, { name: '不同意', callback: function() { alert('你不同意') } }, { name: '无效按钮', disabled: true }, { name: '关闭我' } ]});
定时关闭的消息[time]
art.dialog({ time: 2, content: '两秒后关闭'});
防止重复弹出[id]
art.dialog({ id: 'testID2', content: '再次点击运行看看'});art.dialog({id: 'testID2'}).title('3秒后关闭').time(3);
定义消息图标[icon]请查看skin/icons目录下的图标
art.dialog({ icon: 'succeed', content: '我可以定义消息图标哦'});
内容与边界填充边距[padding]有时候并不需要默认的内容填充边距,如展示图片与视频
art.dialog({ padding: 0, title: '照片', content: '', lock: true});
锁屏[lock & background & opacity]
art.dialog({ lock: true, background: '#600', // 背景色 opacity: 0.87, // 透明度 content: '中断用户在对话框以外的交互,展示重要操作与消息', icon: 'error', ok: function() { art.dialog({content: '再来一个锁屏', lock: true}); returnfalse; }, cancel: true});
跟随元素[follw]1、标准形式
art.dialog({ follow: document.getElementById('followTestBtn'), content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框'});
2、使用简写形式 (已经绑定onclick事件,注意此返回值不再是对话框扩展方法)
art('#demoCode_follow_a').dialog({ content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框'});
自定义坐标[left & top]
art.dialog({ left: 100, top: '60%', content: '我改变坐标了'});
创建一个右下角浮动的消息窗口
art.dialog({ id: 'msg', title: '公告', content: 'hello world!', width: 320, height: 240, left: '100%', top: '100%', fixed: true, drag: false, resize: false})
设置大小[width & height]
art.dialog({ width: '20em', height: 55, content: '尺寸可以带单位'});
创建一个全屏对话框
art.dialog({ width: '100%', height: '100%', left: '0%', top: '0%', fixed: true, resize: false, drag: false})
静止定位[fixed]
art.dialog({ fixed: true, content: '请拖动滚动条查看'});
不许拖拽[drag & resize]
art.dialog({ drag: false, resize: false, content: '禁止拖拽'});
扩展方法演示特别说明:扩展方法支持链式操作获取扩展方法一:直接引用返回var dialog = art.dialog({ title: '我是对话框', content: '我是初始化的内容'}); dialog.content('对话框内容被扩展方法改变了').title('提示'); 获取扩展方法二:通过对话框IDart.dialog({ id: 'KDf435', title: '警告', content: '我是初始化的内容'}); art.dialog.list['KDf435'].content('对话框内容被扩展方法改变了'); 获取扩展方法三:回调函数中thisart.dialog({ title: '警告', content: '我是初始化的内容', ok: function () { this.content('你点了确定按钮').lock(); return false; }, init: function () { this.content('对话框内容被扩展方法改变了'); }}); 关闭页面所有对话框var list = art.dialog.list;for (var i in list) { list[i].close();};
按钮接口演示备注:回调函数如果返回false将阻止对话框关闭var dialog = art.dialog({ title: '警告', content: '点击管理按钮将让删除按钮可用', width: '20em', button: [{ name: '管理', callback: function () { this .content('我更改了删除按钮') .button({ name: '删除', disabled: false }) .lock(); return false; }, focus: true }]}); dialog.button( { name: '删除', callback: function () { alert('delect') }, disabled: true })
标题倒计时var timer;art.dialog({ content: '时间越来越少,越来越少..', init: function () { var that = this, i = 5; var fn = function () { that.title(i + '秒后关闭'); !i && that.close(); i --; }; timer = setInterval(fn, 1000); fn(); }, close: function () { clearInterval(timer); }}).show();关闭不删除内容art.dialog({ id: 'show-hide', content: '关闭后阻止对话框被删除,只隐藏对话框', close: function () { this.hide(); return false; }}).show();AJAX高级应用:执行HTML片段中特殊script标签HTML片段中的标签包裹的javascript将会在artDialog内部执行,其this指向对话框扩展方法,这样可以进一步实现消息内容模块化。(本例子使用了AJAX,需要在服务器上运行。可打开 ./ajaxContent/login.html 查看源码中的自定义脚本)var dialog = art.dialog({id: 'N3690',title: false}); // jQuery ajax $.ajax({ url: './ajaxContent/login.html', success: function (data) { dialog.content(data); }, cache: false});应用到你的项目在页面head引入artDialog,其中skin参数表示对话框使用的风格文件(如果项目采用jQuery作为框架,则引用jQuery artDialog版本)。如果需要在iframe应用下提供 更好的支持 ,可加载插件:配置全局默认参数(可选):(function (config) { config['lock'] = true; config['fixed'] = true; config['okVal'] = 'Ok'; config['cancelVal'] = 'Cancel'; // [more..]})(art.dialog.defaults);
artDialog使用说明(弹窗API)
Js代码
2.
传入HTMLElement 备注:1、元素不是复制而是完整移动到对话框中,所以原有的事件与属性都将会保留 2、如果隐藏元素被传入到对话框,会设置display:block属性显示该元素 3、对话框关闭的时候元素将恢复到原来在页面的位置,style display属性也将恢复 ******************************************************************************************** 只前这个东东也是朋友完我的,后来经刚刚一位朋友提醒,我google一下,现在完整的教程都在里面,所有包都在里面。 我也不好意思,现在补充下。呵呵,因为不算晚吧。 art.dialog({ content: document.getElementByIdx_x_x('demoCode_content_DOM'), id: 'EF893L' }); 效果:把指定的div加载到这个弹框上
JS代码
标题 [title] art.dialog({ title: 'hello world!' });效果:
Js代码
确定取消按钮 [ok & cancel] 备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭 art.dialog({ content: '如果定义了回调函数才会出现相应的按钮', ok: function () { this.title('3秒后自动关闭').time(3); return false; }, cancelVal: '关闭', cancel: true //为true等价于function(){} });
Js代码
创建一个全屏对话框 art.dialog({ width: '100%', height: '100%', left: '0%', top: '0%', fixed: true, resize: false, drag: false })效果图:
Js代码
右下角滑动通知 artDialog.notice = function (options) { var opt = options || {}, api, aConfig, hide, wrap, top, duration = 800; var config = { id: 'Notice', left: '100%', top: '100%', fixed: true, drag: false, resize: false, follow: null, lock: false, init: function(here){ api = this; aConfig = api.config; wrap = api.DOM.wrap; top = parseInt(wrap[0].style.top); hide = top + wrap[0].offsetHeight; wrap.css('top', hide + 'px') .animate({top: top + 'px'}, duration, function () { opt.init && opt.init.call(api, here); }); }, close: function(here){ wrap.animate({top: hide + 'px'}, duration, function () { opt.close && opt.close.call(this, here); aConfig.close = $.noop; api.close(); }); return false; } }; for (var i in opt) { if (config[i] === undefined) config[i] = opt[i]; }; return artDialog(config); }; 调用示例: art.dialog.notice({ title: '万象网管', width: 220,// 必须指定一个像素宽度值或者百分比,否则浏览器窗口改变可能导致artDialog收缩 content: '尊敬的顾客朋友,您IQ卡余额不足10元,请及时充值', icon: 'face-sad', time: 5 });
效果:模仿网吧右下角通知 带动画效果5秒后自动消失
Js代码
跨域访问 跨域访问无法自适应大小,也无法进行父页面与子页面数据交换 art.dialog.open('http://www.connect.renren.com/igadget/renren/index.html', {title: '人人网', width: 320, height: 400});
Js代码
加载googleMAP art.dialog.open('googleMaps.html');
效果图:
如何使用?1.导入2.加上Js代码(function (config) { config['lock'] = true; config['fixed'] = true; config['okVal'] = 'Ok'; config['cancelVal'] = 'Cancel'; // [more..] })(art.dialog.defaults);//这个是用哪个主题有很多主题的你把名字打上就行啦 **********************这是googleMap的代码Copy就行啦没有问题有问题给我留言不懂就问只要你问我就说*********************************** Js代码
地址: |
正在创建模型,此时不可使用上下文“的解决办法