2016-08-24 57 views
1

我使用的是Google Chrome瀏覽器,我有一個Javascript代碼,打開一個彈出窗口,並在作業完成後關閉它。我的代碼是與此類似:調試器不通過window.close步進使用Javascript

myWindow = window.open(...); //it opens successfully. 
[code here is executed successfully] 
myWindow.close(); //can't get after this point 
[some more code that I can't reach] 

我有更多的代碼關閉窗口後,但調試器,點後就再也沒幾步之遙。我甚至試過debugger;close但無濟於事。窗口確實接近罰款。

如何在關閉彈出窗口後執行腳本? (顯然,代碼是由是封閉的父窗口獨資)

+0

你可以調用另一個JavaScript功能從關閉按鈕,然後將您的內容設置爲可見 –

+0

@BilalZafar關閉按鈕?哪些內容?我從來沒有提到像「關閉按鈕」或設置內容的東西?請在評論前閱讀問題。 –

+0

「關閉窗口後我有更多的代碼」這是什麼? –

回答

1

這似乎是在瀏覽器的錯誤。

debugger;     // Stops 
var x = '0';    // F10 
console.log(x);   // F10 
var mW = window.open(); // F10 
x = '1';     // F10 
console.log(x);   // F10 
mW.close();    // F10 
debugger;     // Skipped 
x = '2';     
debugger;     // Stops 
console.log(x);   // F10 

它看起來就像你不能在調試器的window.close()後立即停止,除非一些其他的代碼已經先執行 - 如分配,或console.log。即使設置一個斷點上的第一條語句window.close()不會導致調試器再次突破 - 但放置一個斷點上線一前一後緊跟window.close()導致調試器打破。

大概沒有一個滿意的答案,但除非Chrome團隊加油堆棧自己,或者一個錯誤引發與Chromium項目,我懷疑我們會得到比這更多...

+1

有趣..似乎我已經偶然發現了一個真正的角落案件。 –

1

嘗試移動你的代碼.onbeforeunload功能是這樣的:

myWindow = window.open(...); //it opens successfully. 
myWindow.onbeforeunload = function() { 
    [some more code that I can't reach] 
} 
[code here is executed successfully] 
myWindow.close(); //can't get after this point 
相關問題