[英]Prevent loss of element focus (Need cross-browser solution)
我使用以下解決方案來防止用戶單擊.box
元素時#content
文本區域失去焦點:
// Detect latest element clicked
$(document).mousedown(function(e) {
lastElClicked = $(e.target);
});
// Prevent loss of focus for textarea when clicking on tools
$("#content").on("blur", function(event) {
if (lastElClicked.attr('class') == 'box'){
event.preventDefault();
this.focus();
return false;
}
});
簡而言之,在鼠標按下時保存已單擊的目標元素。 在#content
文本區域的模糊情況下,檢查最后單擊的元素是否為.box
。 如果那是防止默認設置的原因,請重新調整#content
文本區域的#content
並返回false。
我的解決方案在Chrome上運行完美,但在Safari和Firefox下仍然沒有重點關注。 我該如何使它跨瀏覽器工作?
編輯:
提供的解決方案的問題在於,該元素實際上失去了焦點,之后又重新聚焦。 在帶有上述代碼的Chrome瀏覽器中,我從未真正放松過焦點,這意味着所選文本保持選中狀態。
編輯:
嘗試這個:
// Detect latest element clicked
$(document).mousedown(function(e) {
window.lastElClicked = $(e.target);
});
// Prevent loss of focus for textarea when clicking on tools
$("#content").on("blur", function(event) {
if (window.lastElClicked.attr('class') == 'box'){
event.preventDefault();
var that=this;
setTimeout(function(){
$(that).trigger('focus');
},200);
window.lastElClicked="";
return false;
}
});
另外,這是一篇有關該錯誤的不錯的文章,似乎出現在Safari的一部分: http : //bugs.jquery.com/ticket/7768
或者,您可以嘗試以下一種方法:
$('.box').click(function(event){
event.preventDefault();
$('input').each(function(){
$(this).trigger('blur');
});
setTimeout(function(){
$('#content').trigger('focus');
},200);
});
最后,我不得不提的是,它仍然失去了對突出顯示文本的關注,在我看來,這在這種情況下是無法完成的任務!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.