在使用了各種Modalbox(ex:thickbox,fancybox)的情況下,點擊事件做為觸發Modalbox啟動的重要程序,但是並非所有的元素點擊之後都會觸發此事件,或者需要利用表單submit 資訊時也不會觸發此事件
這時候要利用Modalbox接收ajax更新後的頁面訊息就變得困難,就算trace Modalbox 的原始碼,找出show function來手動呼叫,也是bug多多、修改困難,最常見的是cycle問題發生,只有第一次呼叫show function會成功,之後會因為沒有正確結束function造成循環錯誤,最終的辦法就是刷新此頁面,卻又跟ajax的理想背道而馳…
最好的辦法就是模擬滑鼠點擊事件,就從表單傳送來說
我們可以在接收submit的時候擷取資訊,利用模擬滑鼠點擊事件來觸發Modalbox起動
其實IE有個click function可使用,該元素呼叫此function會直接做click event的動作
var fireOnThis = document.getElementById('alink');
fireOnThis.click();
但是在Firefox和Safari中並沒有element.click()
所以我們得要自己手動造一個新事件,參考
var fireOnThis = document.getElementById('alink');
if (document.createEvent)//Firefox
{
var evObj = document.createEvent('MouseEvents');
evObj.initEvent('click', true, false);
fireOnThis.dispatchEvent(evObj);
}
else if (document.createEventObject)//IE
{
fireOnThis.fireEvent('onclick');
}
你可以在網頁中建置一個id為alink的超連結,PO上程式碼執行一次網頁,在沒有使用modalbox的情況下,效果應該是跟window.location一樣,不過如果是modalbox就會秀出
有人可能就會問,這不就跟綁架連結一樣嗎!?強制導入到有病毒或木馬的網頁…XD