act : [[expr, callback, option ]] 指定特定元素的播放方式,callback 的參數為 elem, options, pages。 詳細請參考 選項:act 說明。
$("#demo").msgPlay({ act: [ ['i', function(i){$(i).css('color','yellow'); }], ['p', function(elem,options){ $(elem).css({backgroundColor:'green'}).after('每'+options.speed+' ms 一個字'); }], ['hr', function(elem,options,pages){$(elem).before('<p>總頁數:'+pages.length+'</p>');}], ['hr ~ span.highlight:eq(2)', function(i){$(i).css('backgroundColor','purple');}] ], forward: 'auto' });
act 的第三個參數可設為 pause 或 queue,
可以根據文件內容,控制播放的停頓行為。
$("#demo").msgPlay({ act: [ ['i', null, 'pause'], ['big', function(i){$(i).fadeIn(3000);}, 'queue'], ['img', function(i){$(i).fadeIn(3000);}], ['table', null, 'pause'] ], forward: 'auto' });
TH | TH | |
---|---|---|
TD | TD | TD |
TD | TD (pause 在這之後) |
pageExpr 將各個符合的內容視為分頁。
$("#demo").msgPlay({ pageExpr: 'div', forward: 'auto' });
※不符合 pageExpr 的元素,預設情形下會被移除。
※pageExpr 只會在第一層子節點中尋找分頁,第二層以下的 div 不會被視為分頁。
forward、back、next 用來指定分頁控制按鈕,
將控制功能綁到既有的網頁元素上。找不到的話會自行建立。
$("#demo").msgPlay({ pageExpr: 'p', forward: "not-found", back: '#ex-btn-back', next: '#ex-btn-next' });
網頁上沒有符合 "not-found" (forward)的元素,所以 msgPlay 自己產生了一個 [FORWARD] 按鈕;
網頁上已經有符合 "#ex-btn-pager" (next)的元素,當分頁結束時,「下一頁」按鈕()圖片就會出現。
若目前不是在第一頁,
「上一頁」按鈕()就會出現。
請留意:
如果沒有設定這些按鈕,就無法操作分頁;
msgPlay 不會自動產生按鈕。
elemSpeed 是元素節點的播放速度。
$("#demo").msgPlay({ elemSpeed: 300, forward: 'auto' });
間隔 300 毫秒才會顯示下一張(預設會一次全部顯示。)
文字元素文字元素文字元素文字元素文字元素
dump、removeUnused、trimText、keepInvisible 使用例。
$("#demo").msgPlay({ dump: 'none', removeUnused: false, trimText: false, keepInvisible: false, pageExpr: 'div', forward: '#ex-btn-forward2', back: '#ex-btn-back2', next: '#ex-btn-next2' });
文字節點前後的空白,會被當作一個字來播放。
例如 …稍等…
因為 <i> 前後空白的關係會拖長時間……
即使按「上一頁」也會逐字播放。(預設為 'back',表示「上一頁」不會逐字播放。)
因為 removeUnused 值為 false,
所以這個 <P> 元素不會被移除。
原本不顯示的東西(),播放的時候會顯示出來。
onPageStart、onPageDump、onForward 使用例。
$("#demo").msgPlay({ onPageStart: function(){ $('#demo-list').append('<li class="red">onPageStart</li>'); }, onPageDump: function(){ $('#demo-list').append('<li class="green">onPageDump</li>'); }, onForward: function(){ $('#demo-list').append('<li>onForward</li>'); }, pageExpr: 'div', forward: '#ex-btn-forward3', back: '#ex-btn-back3', next: '#ex-btn-next3', removeUnused: false });
開始播放後,再修改元素內容也無法增加分頁;
但可以修改元素內容後,再套用 msgPlay()
重新播放。
$("#demo").msgPlay({ pageExpr: 'div', forward: '#ex-btn-forward4', back: '#ex-btn-back4', next: '#ex-btn-next4', act: [ ['img.face',function(i){$(i).fadeIn('slow');}], ['br.fire',function(){$('#demo-ac-body img.face:first').attr('src','image/demo100_alt.jpg');}] ] });
Demo 中的兩個按鈕設有 onclick = "demo_ac(this)"
,
demo_ac
會修改 #demo-ac-body
元素內容後,再套用 msgPlay()
播放。
function demo_ac(obj) { if( jQuery(obj).parents('#demo-ac-body').length ) { jQuery(obj).attr('disabled','disabled'); var ans = (obj.value=='好') ? '#ac-yes' : '#ac-no'; jQuery('#demo-ac-body').load( 'demo_body.html ' + ans, function(){ $(this).children(':first').msgPlay(demo_options['demo-alt_content']); }); } };