在confirm的時候點擊確認(rèn),在prompt再點擊取消,新窗口還是會跳出來怎么解決
第2章編程練習(xí),我下載了官方答案,可是發(fā)現(xiàn)它也有這個問題。
? 官方答案:
function openWindon(){?
if(confirm("確定打開新窗口嗎?")){
var url = prompt("請輸入一個網(wǎng)址","http://idcbgp.cn/"); ?
window.open( url,"_blank","toolbar=no, menubar=no, scrollbars=yes, ?width=400, height=400");
}
} ?
?
2017-01-12
似乎你對 confirm 和 prompt 的理解有點混淆。
confirm 的返回值是 true 或者 false,對應(yīng)到你的操作中,就是“打開”或者“不打開”新頁面。
prompt 的返回值比較復(fù)雜一點,
如果你點擊了“確定”,那么返回值就是輸入框里的內(nèi)容;
如果你點擊了“取消”,那么返回值就是 null。
所以,
如果你在 confirm 的彈框上點了“確定”,那你就是選擇了打開新頁面。
在?prompt 的彈框里,無論是點“確定”或者“取消”,都只是修改了 url 的值而已,并不影響你打開新頁面這個操作。
PS:這個代碼中,如果你在 prompt 彈框時點擊取消,window.open() 時的 url 應(yīng)該是 null,所以應(yīng)該也是打不開 imooc 這個網(wǎng)址的。
2017-01-12
謝謝!你的解答完整又清晰!非常感謝!又重新寫了一遍這次沒有問題了!非常感謝你科普了我沒有搞懂的地方【出現(xiàn)prompt的彈框;- 如果此時你點“取消”,照樣是會打開新頁面,但是沒有網(wǎng)址,是一個空白的頁面;】
2017-01-12
在confirm的時候點擊確認(rèn)----這個函數(shù)的返回值是true或 false ,如果確定,返回true,就會執(zhí)行if下面的2句代碼,所以會打開新窗口。prompt(str1,str2)這個函數(shù)是獲得用戶的輸入,其中str2是默認(rèn)幫用戶填的值。兩個函數(shù)共同點是:用戶確認(rèn)前,啥都不能做??梢哉J(rèn)為,這就是為什么放在一起介紹的原因吧。
2017-01-12
只要你點了confirm中的確認(rèn)返回true后,就一定要打開新窗口,prompt只是獲得你要打開什么網(wǎng)址,跟是否打開無關(guān)。