簡體   English   中英

如何將焦點帶到jquery的窗口?

[英]How to bring focus to a window in jquery?

我試圖使用jquery將焦點帶到窗口。 通過父頁面上的按鈕單擊彈出窗口。 我在子窗口中進行了一些ajax調用,因此數據正在更新。 我的問題是,如果用戶點擊父窗口並隱藏其后面的子項,我想在有數據更新時將該子窗口恢復到最前端。

在$(document).ready中我連接了這些事件:

  $(window).blur(function(){
    WindowHasFocus =false;
}).focus(function(){
    WindowHasFocus =true;
});

然后,如果數據更新,我調用此函數:

function FocusInput(){

 if(!WindowHasFocus){
    $(window).focus();
 }
}

這在IE8中按預期工作,但在FireFox(以及所有其他瀏覽器)中,如果單擊父窗口,Blur事件似乎會觸發。 關於如何實現這一點的任何建議/想法?

更新:

總facepalm時刻:在FireFox中:*工具*選項... *內容選項卡*“啟用JavaScript”旁邊的高級按鈕*選中名為“提升或降低Windows”的框

Total facepalm時刻:在FireFox中:

  • 工具
  • 選項...
  • 內容標簽
  • “啟用JavaScript”旁邊的“高級”按鈕
  • 選中名為“升高或降低Windows”的框

默認情況下,此功能處於關閉狀態,必須啟用。 此外,我認為,由於它在Chrome中不起作用,Safari會是相同的,但你知道他們對“假設”的看法(它適用於Safari,但不適用於Chrome)。

如果沒有一個強大的理由有兩個單獨的窗口,那么最好使用“模態框”,有很多例子和jquery插件來實現這一點。 這樣一個插件的一個例子: http//www.84bytes.com/2008/06/02/jquery-modal-dialog-boxes/

你是絕對正確的。 在FF中,似乎它確實觸發了事件,但同時,它似乎沒有將元素注冊為聚焦。 因此,永遠不會觸發模糊事件。 不確定我是否正確地解釋了......以下代碼說明了一切。

在此示例中,默認情況下隱藏該框,但通過焦點事件偵聽器顯示該框。 在IE 8中,如果單擊主窗口,它仍然會觸發模糊,但在FF中它不會:

<html>
<head>

</head>
<body>
    <div id="hiddenWin" style="width: 100px; height: 100px; background-color: Black; display: none;"></div>

    <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
        var something = 12;
        something += 4; 

        $(document).ready(function()        
            {

                $("#hiddenWin").focus(function()
                    {
                        $(this).show();
                    }
                ).blur(function()
                    {
                        $(this).hide();
                    }               
                )               

                $("#hiddenWin").focus();
            }
        );
    </script>

</body>
</html>

根據您的需要,設置疊加背景是否可行? 某個固定位置@ top:0和left:0占據整個屏幕並且z-index小於你的彈出窗口。 這樣,當他們點擊疊加層時,它會竊取焦點,然后你可以隱藏所有內容......? IDK,只是一個建議。 我會一直搞亂,看看能不能搞清楚。 好問題。 +1

看起來你不應該知道什么時候你的窗戶模糊了。 當您的數據更新時,您的窗口要么沒有聚焦,在這種情況下您想要聚焦它,或者它已經聚焦,並且再次聚焦它不會對您造成傷害。

是的,模態的東西可能是要走的路,但有時你只需要按照你想要的方式去做。

我會使用普通的舊JavaScript。 命名窗口並使其成為焦點。

    function showImageWindow(imageURL)
    {
        var imageWindow = window.open(imageURL,"My_Window","width=1000px,height=1000px,menubar=0,titlebar=0,toolbar=0,location=0,scrollbars=0,status=0"); 
        imageWindow.focus();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM