2012-04-11 38 views
2

我有一個使用webview加載和顯示html頁面的Android應用程序。 但是,當一個新的頁面剛剛被加載到web視圖中時,有時會有一個已經懸停的元素。例如,id爲「imhovered」的元素已經被徘徊,並具有div的藍色背景(請參閱下面的代碼)。這種情況非常隨機,取決於當前頁面的元素結構以及上一頁中用戶的觸摸位置。Android Webview如何刪除加載元素的焦點/懸停狀態?

的html代碼:

<body> 
<a href="link1" class="menu"> 
    <div class="qlink">here is div1</div> 
</a> 
<a href="link2" class="menu"> 
    <div class="qlink"> here is div2 </div> 
</a> 
<a id="imhovered" href="link3" class="menu"> 
    <div class="qlink">here is div3</div> 
</a>    
</body> 

和樣式:

.menu { 
    color: red; 
    text-decoration:none; 
    font-family:sans-serif; 
    font-size: 28px; 
} 
.menu:hover { 
    color: red; 
    background-color: green; 
} 

.qlink { 
    padding-left: 84px; 
    padding-top: 24px; 
    padding-bottom: 20px; 
    background: url(aaa.png) no-repeat scroll 28px 0px; 
} 
.qlink:hover { 
    background-color:blue; 
} 

我的問題是如何徘徊元素的狀態刪除此錯誤? 我試圖找到一個解決方案一段時間與研究和自己的實驗,但仍然沒有成功。以下是我在我的實驗中發現:

webview.clearFocus() - >不行

的JavaScript/jQuery的時候DOM就緒:

$(document).ready(function() { 
    alert($("*:hover").attr("id"));--> result:undefined 
    alert($("*:active").attr("id")); --> result:undefined 
    alert($("*:focus").attr("id")); --> result:undefined 
}); 

這意味着,當DOM就緒,沒有專注或懸置的元素。身體的onload

的JavaScript/jQuery的(頁面加載時):

alert($("*:hover").attr("id")); --> result:imhovered 
alert($("*:active").attr("id")); --> result:undefined 
alert($("*:focus").attr("id")); --> result:undefined 

這意味着懸停狀態剛剛現在出現在頁面剛剛被加載。做了任何樣式修改現在已經太遲了,因爲已經顯示了錯誤的懸停背景?它是一個webkit/android的bug嗎?我希望你們能給我任何建議來解決這個問題。提前致謝!

回答

1

我終於發現,當加載過程足夠快,用戶將看不到類型修改,所以我做了下面的樣式修改,它解決了我的問題:

window.onload = 
    function() { 
     var imhovered = $("*:hover"); 
     var children = imhovered.children(); 
     children.removeClass("qlink").addClass("qlinkNoHover"); 
     imhovered.bind('touchstart touchend', function() { 
     $(this).children().toggleClass('qlinkFixHovered'); 
    }); 
} 

.qlinkNoHover { 
    background-color:transparent; 
    padding-left: 84px; 
    padding-top: 24px; 
    padding-bottom: 20px; 
    background: url(aaa.png) no-repeat scroll 28px 0px; 
} 

.qlinkFixHovered { 
    background-color:blue !important; 
} 

我希望這可以幫助有同樣問題的人。

相關問題