2013-07-28 157 views
-1

我想要顯示一個窗口,當我點擊更新按鈕時,這個窗口應該停留3秒,然後關閉自動結束執行更新操作。這是我的代碼,但它不工作setTimeout延遲動作

my $cScript = qq{ 

\$(document).ready(function(){ 
    var w; 
    function closeWindow(){ 
     setTimeout(function() { 
      w.close(); 
     }, 3000); 
    } 

    function createWindow(){ 
     //create the popup window. 

     w=window.open("","",'width=200,height=100'); 

     // put something into the popup window 
     try{ 
      w.document.write('<html><head></head><body><p>Updating...</p></body> <html>') 
     }catch(err){ 
      //handle error here 
     } 
     closeWindow(); 

    }); 
}; 

print $q->script($cScript); 
} 

HTML表單:

$cInput_form .= $q->image_button({ 
     -src => '/media/images/save_1.png', 
     -class=>'btn btn-primary btn-large', 
     -title => 'update', 
     -name => 'Update', 
     -value => $row_id, 
     -onclick => "createWindow()" 
}); 



print $q->fieldset ({-class => "ui-widget ui-widget-content"}, $cInput_form); 

問題出在哪裏?

+0

我的猜測是,'w'變量超出範圍由它得到運行的時間。控制檯中是否有錯誤信息? –

+2

定義「不起作用」,你看到的行爲是什麼? –

+0

在哲學方面,你爲什麼想要控制某些機器的功能? –

回答

2

DEMO:jsFiddle

JS:

var w; 

createWindow(); 

function closeWindow() { 
    setTimeout(function() { 
     w.close(); 
    }, 3000); 
} 

function createWindow() { 
    //create the popup window. 
    var htmlText = "<p>Updating...</p>"; 
    w = window.open("", "", 'width=200,height=100'); 
    $(w.document.body).html(htmlText); 
    closeWindow(); 
}; 
+0

太真,重新閱讀這個問題後,我看到我誤讀的地方... – abc123

+0

但我想這樣:當點擊更新按鈕打開窗口,3秒後,此窗口應自動關閉並執行更新操作。請你能告訴我我的代碼在哪裏嗎?我使用perl – Armida

+0

更新了答案,它工作 – abc123