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'
});






文字元素文字元素文字元素文字元素文字元素
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']);
});
}
};