今天在弄網頁的部分,網頁的內容有用到內嵌VLC,使用的Browser是IE
遇到一個很頭痛的問題是,當要從播放RTSP的VLC頁面中切換到別的頁面時,總是會造成IE Hang住,然後IE無回應 這時候IE只能強制關閉,然後重開。
猜想是因為離開頁面時,應該要呼叫VLC的Stop function先停止,再進行切換的動作。
先說明我網頁的架構如下圖所示,整個網頁有作分割式窗,上面小視窗的連結(herf)點擊之後,會在下面的main_Frame切換到超連結的頁面。另外每個Herf的區塊都有作自己要處理的onclick() function。
後來我查了一些資料得知,當頁面要離開到別的頁面時,javascript的部分會去作windows.onunload() 函式,因此我就把這個VLC的Stop function加入在這個onunload()當中。但後來發現情況並沒有改善。
在查詢了一些資料後,又有一個重大發現,原來onclick()、onunload()、herf這三個東西是有一個優先順序的,動作的先後順序為 onclick() => onunload() => herf
因此我把VLC的Stop function加入到架構圖中的上面三個的onclick事件要做的function當中,就解決了這個IE瀏覽器當VLC播放rtsp串流時切換頁面無回應的問題。
下面程式碼為javascript,附上javascript在mainFrame以及topFrame分別要呼叫VLC stop的程式碼:
=============== mainFrame 的 javascript部分 ==============
function getVLC(name)
{
if (window.document[name])
{
return window.document[name];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1)
{
if (document.embeds && document.embeds[name])
return document.embeds[name];
}
else
{
return document.getElementById(name);
}
}
getVLC("vlc").playlist.stop();
=============== topFrame 的 javascript部分 ==============
function getVLC(name)
{
if (self.parent.frames["mainFrame"].document[name])
{
return self.parent.frames["mainFrame"].document[name];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1)
{
if (self.parent.frames["mainFrame"].embeds && self.parent.frames["mainFrame"].document.embeds[name])
return self.parent.frames["mainFrame"].document.embeds[name];
}
else
{
return self.parent.frames["mainFrame"].document.getElementById(name);
}
}
getVLC("vlc").playlist.stop();
沒有留言:
張貼留言