aui / artdialog Goto Github PK
View Code? Open in Web Editor NEW经典的网页对话框组件
Home Page: http://aui.github.com/artDialog/
License: GNU Lesser General Public License v3.0
经典的网页对话框组件
Home Page: http://aui.github.com/artDialog/
License: GNU Lesser General Public License v3.0
需要这样的功能 比如鼠标移动到用户小图标上 显示用户的概要信息 这时候需要ajax加载用户的个人信息 已经采用了artdialog作为主要的对话框插件了 如果引入第三方jquery插件也是可以做到的 但最后看到了artDialog 完全经过增强可以做到这样的要求。
粘滞显示(follow) 在加一个小三角 就可以了 , 用simple皮肤 去掉那个小关闭按钮
下面是小三角实现
[php]
<style id="jsbin-css">
.triangle {
display: inline-block;
width: 0;
height: 0;
border-style: solid;
border-width: 0 45px 60px 45px;
border-color: transparent transparent #000 transparent;
}
</style>
<div class="triangle"></div>
我本人不会css 只能拼拼凑凑了 如果能支持这个功能就太好了 可以作为一个增强(enhance) 感觉对你来说是小菜 可以参考这个插件:
我原来使用的是js自带的prompt,页面比较丑,但是弹出框的位置是在总页面的中间。
现在我添加了artdialog,但是弹出框只能在子页面的中间,不知如何修改?
谢谢!
目前需要用 locked dialog 的方式做一个等待窗口,在等待期间不希望用户关闭掉窗口,关闭窗口可以通过 api 完成。
artDialog很不错,不过有个小问题
如果将artDialog嵌套使用,如下面的例子,第一个对话框用于提问,在Save按钮则显示
提示框以进行异步操作,在ie8中
if (_activeElement) {
_activeElement.focus();
}
就出错了,_activeElement的计算是否有更合理的处理?
测试例子
function test() { art.dialog({ lock : true, content : 'Save?', button : [ { value : 'Save', focus : true, callback : doSave }, { value : 'Discard', callback : function(){ } } ], cancel : function() { } }); } function doSave() { var tip = art.dialog(); tip.content("wait..."); setTimeout(function(){ tip.content("success").time(2000); }, 2000); }
不管是ok还是cancel,还是角上的X关闭了对话框,都想触发一个事件,该怎么做?
chrome
各子站均在同一父域下,如何解决iframe下使用artDialog?
$.expando = '@cache' + + new Date; //344行
_expando = 'artDialog' + + new Date, //578行
_expando = 'artDialog' + + new Date, //21行
由于GoogleClosure或YUI integration对js进行压缩时会去除上述语句中的"+ +"中的空格,所以引起如下脚本错误:
"字符串"++new Date;
SyntaxError: Unexpected token new
"字符串"++new Date;
SyntaxError: invalid increment operand
建议加上括号:
$.expando = '@cache' + (+ new Date); //344行
cancel=false为不显示标题中的关闭按钮,如果是这样设定的话,应该同时也取消esc键的效果。
var cancel=api.config.cancel===false;// 判断是否为cancel
keyCode === 27 && !cancel && api._click('cancel');
RT
嵌入frame的时候,拖拽后窗口就一直跟着鼠标在动。需要双击才能停下来,非常不方便。不知道是不是bug?还望解答
/**
* 获取最后弹出的artDialog
* @return {Object} 最后一个artDialog 实例
*/
artDialog.getLast = function () {
var keys = [];
for(var k in artDialog.list) {
keys.push(k);
}
var key = keys.pop();
return key == '' ? {} : artDialog.list[key];
};
我有一个统一登录的页头。
各子站都使用这个页头。里面主要就是使用artdiaglog实现的一个登录窗。
现在有一个问题,其中一个子站是合作方开发的,现在要求这个合作方的子站也使用我这个登录窗,他们不是很合作,只想用iframe的方式嵌套这个页头,经过我们的试验,在iframe中无法将artdiaglog显示在父窗体中,请问如何达到我这个目标呢
在同一页面上实现多个皮肤,我的构想实现方式是这样的
首先在引用artdialog.js的时候,参数可以用"|"隔开,如:
<script src="js/artDialog4.1.7/jquery.artDialog.js?skin=default|aero"></script>
然后在js端进行拆分skin参数,这样就能同时加载2个皮肤的css文件。
接着需要在dialog模版最外层再套一层div,用class来区分皮肤。
同时调用dialog的参数里加个theme,如果不填写则默认第一个,也就是default皮肤,如果参数是这样写的,则默认调用aero皮肤
<script src="js/artDialog4.1.7/jquery.artDialog.js?skin=aero|default"></script>
因为4.x版本是在google code维护,我不会svn,所以即使修改好也不会提交。
希望糖饼能将这个功能更新到4.x的下一版本中,虽然实用性不是那么强,但也满足了小部分人群的需求。
jsFiddle: http://jsfiddle.net/qXH28/
Thanks
我在项目中用的是angularjs + seajs,并没有引用jquery
https://spmjs.org/atans/artDialog/
只要用來代替bootstrap的bootbox
非常好用,感謝
var d = dialog({
content: 'hello world'
});
d.show(document.getElementById('api-show'));
5.x能实现iframe关闭artDialog吗?或者说有相应的插件吗?毕竟使用到iframe的情况挺多的.如果为了一个iframe而增加其他的库,感觉很不值
我查看了源代码,发现代码没有实现把id值赋给button
少了一句:
button.id = id
你好,看了你的这个组件,写的很精彩。快速hello world,高级用法,以及插件机制。
现在默认的样式是绿色的顶,米白色的底色,请问如何更改默认的样式,有支持皮肤功能吗?还是只能通过自行设置css实现?
你好,
以前可以使用left和top来设置窗口位置,新版本里取消这个功能,还可以设置显示位置吗?
我在ie9下引入了jquery-1.9.1.min.js之后,又引入了jquery.artDialog.min.js,然后页面上的 $.dialog()方法就不能用了,但在ff和chrome下,都能正常显示,而ie9下控制台报错,到jquery.artDialog.min.js, 行10 字符247。
所以特别过来问问,artDialog兼容到多少的jquery版本,我这边的异常是不是跟jquery的版本太高而导致
如果做的话,考虑浏览器差异,不同的浏览器alert出来的皮不一样。
// 获取iframe内部尺寸
parseInt($(ibody).css('marginLeft'))
———————————
$(ibody).css('marginLeft') 有可能返回 "auto"
IE6,IE7 console未定义,IE8 没有title时,式样很乱
当在弹出层中引用了ckeditor的textarea替代html中textarea后, 无法点击编辑框.
html代码如下:
《textarea rows="3" cols="25" id="newsContent" name="》newsContent"《 /textarea》
《script type="text/javascript"》CKEDITOR.replace('newsContent');《/script》
=========分割线===============
"<>"分别用"《》"代替了。。。git不支持html转义?囧
上述代码放在一个待弹出的DIV中, 当用artdialog弹出这个层以后,textarea 不可以编辑.
在artDialog A中再打开一个artDialog B,B的css中显示position:fixed,top:0;,但实际显示top估计在100px左右,请问,怎么调整?谢谢!
报错代码:_activeElement = document.activeElement
几款皮肤已经很出色,但是系统建设中往往风格是自主设计的,难免需要自定义,没有足够的范例和文档,只能自己慢慢摸索!希望能有皮肤制作方案!
artDialog({
fixed: true,
lock: true,
title: '选择...',
content: ”<div id="aaaaa"></div>“,
cancel: true,
init: function() {
$('#aaaaa').html('aaaaaaaaaaaaaaaaaaaaaaaaa');
}
});
没有居中,能否提供函数,再次重新定位?
还有, 能否增加 4.x 默认的那个半透明粗边框的皮肤? 还是原来的好看。
好像失效了
文档示例 中偏偏该示例无运行按钮 . 作者无任何说明. 深表遗憾.
此bug 我暂时
传入元素节点:
dialog({
content: document.getElementById('test'),
id: 'EF893L'
}).show();
你好
请问下怎么不使用4系列的参数加载皮肤模式,那种方式挺友好的,异步加载也挺方便。
v6为什么没有皮肤了?如果想添加样式怎么办?
先出来的dialog,会被后出来的dialog遮盖,如
art.dialog({title:"test1"});art.dialog({title:"test2"});
先看到的是test2,而不是test1
怎么让先看到test1呢?
如题,
因为我的弹出框里有tabs,每个tab的大小不固定,所以需要切换tab时可以修改窗体在主页面中的位置
很好用的控件,我已经用了2年了.
现在用到了5.0版.加油~!
http://www.kudystudio.com/jbox/jbox-demo.html
这个觉得他提供这些常见的功能不错
希望作者能够吸引一下人家的优点,谢谢 artDialog
一些信息量比较大的页面,之前都iframe弹出的,现在新版本都没法用了,感觉好纠结~
下载artDialog-5.0.3并解压后,要解压的根目录下创建 iframe.html 。
代码如下:
iframe test
<iframe width="100%" height="100%" frameborder="0" scrolling="no" src="index.html">
</iframe>
在IE8,9下打开 iframe.html ,弹出框无法显示。 F12脚本调试,提示
_activeElement = document.activeElement
出错。
V6的皮肤配置向前兼容吗
我认为调用关闭方法时 不管是不是单例模式都应该把页面的生成的div清掉 而不仅仅是将事件卸载
/** 关闭对话框 */
close: function () {
if (this.closed) {
return this;
};
var dom = this.dom,
$wrap = dom.wrap,
list = artDialog.list,
beforeunload = this.config.beforeunload;
if (beforeunload && beforeunload.call(this) === false) {
return this;
};
if (artDialog.focus === this) {
artDialog.focus = null;
};
if (this._follow) {
this._follow.removeAttribute(_expando + 'follow');
}
if (this._elemBack) {
this._elemBack();
};
this.time();
this.unlock();
this._removeEvent();
delete list[this.config.id];
if (_singleton) {
$wrap.remove();
// 使用单例模式
} else {
_singleton = this;
dom.title.html('');
dom.content.html('');
dom.buttons.html('');
$wrap[0].className = $wrap[0].style.cssText = '';
dom.outer[0].className = 'd-outer';
$wrap.css({
left: 0,
top: 0,
position: _isFixed ? 'fixed' : 'absolute'
});
for (var i in this) {
if (this.hasOwnProperty(i) && i !== 'dom') {
delete this[i];
};
};
this.hidden();
};
// 恢复焦点,照顾键盘操作的用户
if (_activeElement) {
_activeElement.focus();
}
this.closed = true;
return this;
},
demo页面中 插件示例中的shake示例,当我多次点击dialog之外的区域的时候,dialog'就关闭了,我觉得点击dialog之外的区域,dialog不应该关闭。
设置参数为lock:true
之后,会有遮盖层出现。
双击遮盖层则会关闭弹窗, 若想取消这个双击关闭有没有什么好方法呢?
我找不到刪除button的方法,請問,如何刪除呢?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.