artDialog.js的使用(引用http://www.2cto.com/kf/201303/195812.html,artDialog基本使用)

来源:http://www.cnblogs.com/huhunet/archive/2016/10/26/5999839.html
-Advertisement-
Play Games

開發項目中用到了artDialog.js,從而專門學習一下如何配置和使用。 一、artDialog是什麼 artDialog是一個精巧的web對話框組件,壓縮後只有十多KB,並且不依賴其他框架。 二、artDialog的使用 以下內容引用 http://www.2cto.com/kf/201303/ ...


開發項目中用到了artDialog.js,從而專門學習一下如何配置和使用。

一、artDialog是什麼

artDialog是一個精巧的web對話框組件,壓縮後只有十多KB,並且不依賴其他框架。

二、artDialog的使用

以下內容引用 http://www.2cto.com/kf/201303/195812.html,artDialog基本使用,詳細內容有調整和更改。

在頁面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(JSON)還需要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 是否顯示對話框  

配置全局預設設置

(function (config) { config['lock'] = true; config['fixed'] = true; config['yesText'] = 'yes'; config['noText'] = 'no'; // [more..] })(art.dialog.defaults);

配置參數範例

  • 內容 [content]

    1. 傳入字元串 art.dialog({ content: '我支持HTML' }); 2. 傳入HTMLElement art.dialog({ content: document.getElementById('demoCode_content_DOM'), id: 'EF893L' }); 備註:1)元素不是複製而是完整移動到對話框中,所以原有的事件與屬性都將會保留;2)如果隱藏元素被傳入到對話框,會設置display:block屬性顯示該元素;3)對話框關閉的時候元素將恢復到原來在頁面的位置,style display屬性也將恢復。 3. 高級應用:傳入Object並使用“tmpl”模板參數生成內容 備註:拼接字元串是一個比較無趣的活兒,而artDialog內部使用一個微型模板引擎解析自身UI框架,你可以通過tmp參數繼續使用它格式化內容。模板支持原生的javascript語法,可進行條件判斷。推薦你嘗試使用type="text/tmpl"的script標簽存放模板,如: var tmpl = document.getElementById('tmpl_demoCode_content').innerHTML; art.dialog({ content: { code: 0, users: ['糖餅', '月月鳥', '水水', '麗麗', '花花', '大叔'], me: '糖餅', web: 'http://www.planeart.cn' }, tmpl: tmpl });
  • 標題 [title]

    art.dialog({ title: 'hello world!' });
  • 確定取消按鈕 [yesFn & noFn]

    art.dialog({ content: '如果定義了回調函數才會出現相應的按鈕', yesFn: function () { this.title('3秒後自動關閉').time(3); return false; }, noText: '關閉', noFn: true //為true等價於function(){} }); 備註:回調函數this指向擴展介面,如果返回false將阻止對話框關閉。
  • 自定義按鈕 [button]

    art.dialog({ id: 'testID', content: 'hello world!', button: [ { name: '同意', callback: function () {this.content('你同意了').time(2); return false; }, focus: true }, { name: '不同意', callback: function () {alert('你不同意') } }, { name: '無效按鈕', disabled: true }, { name: '關閉我' } ] }); 備註:回調函數this指向擴展介面,如果返回false將阻止對話框關閉;button參數對應的控制介面名稱也是"button"。
  • 定時關閉的消息 [time]

    art.dialog({ time: 2, content: '兩秒後關閉' });
  • 防止重覆彈出 [id]

    art.dialog({ id: 'testID', content: '再次點擊運行看看' }); art.dialog({id: 'testID'}).title('3秒後關閉').time(3);
  • 定義消息圖標 [icon]

    art.dialog({ icon: 'succeed', content: '我可以定義消息圖標哦' }); 內置圖標:alert、succeed、error、confirm
  • 內容與邊界填充邊距 [padding]

    art.dialog({ padding: 0, title: false, content: '<img src="./images/photo.jpg" width="379" height="500" />', lock: true }); 有時候並不需要預設的內容填充邊距,如展示圖片與視頻
  • 鎖屏 [lock & background & opacity]

    art.dialog({ lock: true, background: '#600', // 背景色 opacity: 0.7, // 透明度 content: '中斷用戶在對話框以外的交互,展示重要操作與消息', icon: 'error', yesFn: function () { art.dialog({content: '再來一個鎖屏', lock:true}); return false; }, noFn: 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: '禁止拖拽' });

四、控制介面

名稱 描述 說明
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,因此你可以使用鏈式編程風格。

控制介面範例

控制介面可以在對話框初始化後控制對話框。
  • 獲取控制介面:直接引用控制介面

    var dialog = art.dialog({ title: '我是對話框', content: '我是初始化的內容' }); dialog.content('對話框內容被控制介面改變了').title('提示');
  • 獲取控制介面:使用對話框ID

    art.dialog({ id: 'KDf435', title: '警告', content: '我是初始化的內容' }); art.dialog.list['KDf435'].content('對話框內容被控制介面改變了').time(2);
  • 獲取控制介面:this引用

    art.dialog({ title: '警告', content: '我是初始化的內容', yesFn: function () { this.content('你點了確定按鈕').position('50%', null).lock().time(2); return false; }, initFn: 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 }); return false; }, focus: true }] }); dialog.button( { name: '刪除', callback: function () {alert('remove') }, disabled: true } )
  • 改變關閉方式

    art.dialog({ id: 'show-hide', content: '關閉後阻止對話框被刪除,只隱藏對話框', closeFn: function () {this.hide(); return false; } }).show();
  • AJAX高級應用:執行HTML片段中特殊script標簽

    HTML片段中的<script type="text/dialog"></script>標簽包裹的javascript將會在對話框中執行,其this指向對話框控制介面,代碼在閉包內執行,不會影響全局,這樣可以進一步實現內容模塊化。 var dialog = art.dialog({id: 'N3690'}); // jQuery ajax $.ajax({ url: './ajaxContent/login.html', success:function (data) { dialog.content(data); }, cache: false }); (本例子使用了AJAX,需要在伺服器上運行。)

五、擴展: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) 短暫提示 參數:內容、顯示時間(單位秒, 預設1.5)(同時只允許一個tips)
自定義 art.dialog.through(options) 創建一個普通可穿越框架的對話框 不鼓勵直接使用window.top這樣的方式穿越,這樣可能因為對話框觸發頁面重置導致其產生所有的對象在記憶體中被清空,而讓對話框無法關閉,所以你應該用這個安全的方法創建自定義對話框。 框架集頁面無法覆蓋第三方元素,不過可以使用一個iframe套住框架集頁面就可以正常使用,見下麵演示文檔

 

-----------------------分割線-------------------------------------------

感謝作者整理。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實例範圍決定如何在請求之間共用服務。 原文地址:http://docs.autofac.org/en/latest/lifetime/instance-scope.html 每個依賴一個實例 使用這個選項,每次請求服務都會返回一個新實例。使用 InstancePerDependency() 指定。這 ...
  • 1.1概述 提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露對象的內部表示。這就是迭代器模式的定義。 合理組織數據的結構以及相關操作是程式設計的一個重要方面,比如在程式設計中經常會使用諸如鏈表、散列表等數據結構。鏈表和散列表等數據結構都是可以存放若幹個對象的集合,其區別是按照不同的方式進 ...
  • 1.UML簡介Unified Modeling Language (UML)又稱統一建模語言或標準建模語言。 簡單說就是以圖形方式表現模型,根據不同模型進行分類,在UML 2.0中有13種圖,以下是他們的主要用途簡介: 1.用例圖:對系統的使用方式分類. 2.類圖:顯示類和它們的相互關係。 3.對象 ...
  • 尾調用優化(Tail Call Optimization) 尾調用是指函數的最後一條語句是函數調用,比如下麵的代碼: 在ES5中,尾調用和其他形式的函數調用一樣:腳本引擎創建一個新的函數棧幀並且壓在當前調用的函數的棧幀上面。也就是說,在整個函數棧上,每一個函數棧幀都會被保存,這有可能造成調用棧占用內 ...
  • 在實際開發中,經常會遇到導入Excel文件的需求,有的產品人想法更多,想要在前端直接判斷文件內容格式是否正確,必填項是否已填寫 依據HTML5的FileReader,可以使用新的API打開本地文件(參考這篇文章) FileReader.readAsBinaryString(Blob|File) Fi ...
  • 通讀官方教程 (guide) 的基礎篇。不要用任何構建工具,就只用最簡單的腳本引入,把教程里的例子模仿一遍,理解用法。不推薦上來就直接用 vue-cli 構建項目,尤其是如果沒有 Node/Webpack 基礎。有了 Node 和 Webpack 的基礎,可以通過 vue-cli 來搭建基於 Web... ...
  • 之前一直聽朋友談起gulp,但沒有使用過,最近有機會接觸到,現在給大家分享下,不對的地方還請指正。我一直以為互相分享是學習的一種好方式。下麵進入正題: 首先來瞭解下gulp,最起碼要知道:我們為什麼要學它,它的優勢。gulp是前端開發過程中對代碼進行構建的工具,它不僅能對網站資源進行優化,在開發過程 ...
  • 關於Sass的基本用法 百度搜索一大推 本人是從阮一峰大神的筆記開始接觸這個玩意 傳送門 http://www.ruanyifeng.com/blog/2012/06/sass.html 來了攜程之後從代替之前做樣式的女孩子從寫css開始乾起 明天女孩度產假歸來 可以擁入js的懷抱 一片新的天地 工 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...