2012-07-22 208 views
0

我知道Javascript的全屏功能還是比較新的,所以我不確定這是一個還沒有解決的bug ,如果問題有簡單的解決方案,或者我犯了一個愚蠢的錯誤...Javascript/JQuery樣式 - #button:點擊全屏後懸停保持活動

我在div中有一個輸入按鈕。點擊後,輸入按鈕使div全屏。此輸入按鈕具有CSS背景圖像和使用相同背景圖像的懸停狀態,但會更改背景位置(以消除多個圖像的需要)。當再次點擊該按鈕時,div將全屏退出。

問題出現在div進入全屏時。點擊時處於懸停狀態的按鈕在div變爲全屏時處於懸停狀態。 div將屏幕上的按鈕重新定位到不再處於光標下方的位置(就像它應該的那樣),但由於某種原因按鈕仍然認爲它應該處於懸停狀態。直到我將光標移回或移出按鈕,該按鈕纔會「解除懸停」並恢復正常的懸停/反懸停行爲。我需要的是在div更改爲全屏後,按鈕不會保持懸停狀態。

簡化代碼片段如下,但我遺漏了RunPrefixMethod函數,因爲它是通用的,我不認爲有必要解決這個問題。如果有必要,讓我知道。

哦,我正在使用最新版本的Firefox,並且尚未在任何其他瀏覽器中對其進行測試。我知道全屏功能僅限於較新的瀏覽器,並且支持它的問題也存在。感謝您的任何幫助,您可以提供。

HTML

<div id="fullBox"> 
    <input type="submit" value="" id="fullbtn" class="btn" onclick="fullscreen();"/> 
</div> 

CSS

#fullBox { 
    width:900px; 
    height:440px; 
    position:absolute; 
} 
#fullbtn { 
    width:44px; 
    height:31px; 
    background: url(btn_full.png) no-repeat top left; 
} 
.btn:hover { 
    background-position: bottom; 
} 

的JavaScript

function fullscreen() { 
    var e = document.getElementById("fullBox"); 
    if (RunPrefixMethod(document, "FullScreen") || 
     RunPrefixMethod(document, "IsFullScreen")) { 
     RunPrefixMethod(document, "CancelFullScreen"); 
    } 
    else { 
     RunPrefixMethod(e, "RequestFullScreen"); 
    } 
} 
+0

裏面全屏幕顯示功能,你可以有一定的時間多了一個功能-out,w這是否刪除背景位置:底部? – Shreedhar 2012-07-22 11:58:24

+0

爲了消除混淆,我在JSFiddle上發佈了一個非常簡化的代碼版本:http://jsfiddle.net/xkNNa/5/此代碼在JSFiddle中不起作用,因爲它們不支持全屏功能,但如果您複製並將代碼段粘貼到文檔中,它將按我在​​我的問題中描述的那樣運行。爲了消除在這個例子中對圖像的需求,我只是簡單地使用背景顏色。如您所見,當您將鼠標懸停在按鈕上時,它會變成綠色,但是當您單擊該按鈕並應用全屏時,該按鈕將保持綠色,而不是像它應該回到紅色。 – Inconnu 2012-07-22 18:03:01

回答

0

試試這個:

HTML

<div id="fullBox"> 
    <input type="submit" value="" onmouseover="this.className='btn hover'" onmouseout="this.className='btn'" id="fullbtn" class="btn" onclick="fullscreen();"/> 
</div> 

CSS

#fullBox { 
    width:900px; 
    height:440px; 
    position:absolute; 
} 
#fullbtn { 
    width:44px; 
    height:31px; 
    background: url(btn_full.png) no-repeat top left; 
} 
.btn.hover { 
    background-position: bottom; 
} 

的JavaScript

function fullscreen() { 
    document.getElementById("fullbtn").className="btn"; 
    var e = document.getElementById("fullBox"); 
    if (RunPrefixMethod(document, "FullScreen") || 
     RunPrefixMethod(document, "IsFullScreen")) { 
     RunPrefixMethod(document, "CancelFullScreen"); 
    } 
    else { 
     RunPrefixMethod(e, "RequestFullScreen"); 
    } 
} 
+0

感謝您的想法,但此代碼無法解決問題。爲了進一步澄清,我使用JSFiddle在我的問題下面寫了一條評論,其中提供了更完整的代碼。它在JSFiddle中不起作用,因爲它們不允許全屏功能,但所有的代碼都在那裏查看。 – Inconnu 2012-07-22 18:06:39

相關問題