问答详情
源自:2-7 编程练习

在confirm的时候点击确认,在prompt再点击取消,新窗口还是会跳出来怎么解决

第2章编程练习,我下载了官方答案,可是发现它也有这个问题。


  官方答案:

function openWindon(){ 

if(confirm("确定打开新窗口吗?")){

var url = prompt("请输入一个网址","http://www.imooc.com/");  

window.open( url,"_blank","toolbar=no, menubar=no, scrollbars=yes,  width=400, height=400");

}

}  

 


提问者:利木 2017-01-12 17:09

个回答

  • 慕丝8281456
    2017-01-12 17:46:42
    已采纳

    似乎你对 confirm 和 prompt 的理解有点混淆。

    • confirm 的返回值是 true 或者 false,对应到你的操作中,就是“打开”或者“不打开”新页面。

    • prompt 的返回值比较复杂一点,

      • 如果你点击了“确定”,那么返回值就是输入框里的内容;

      • 如果你点击了“取消”,那么返回值就是 null。

    所以,

    • 如果你在 confirm 的弹框上点了“确定”,那你就是选择了打开新页面。

    • 在 prompt 的弹框里,无论是点“确定”或者“取消”,都只是修改了 url 的值而已,并不影响你打开新页面这个操作。

    PS:这个代码中,如果你在 prompt 弹框时点击取消,window.open() 时的 url 应该是 null,所以应该也是打不开 imooc 这个网址的。

  • 利木
    2017-01-12 21:05:55

    谢谢!你的解答完整又清晰!非常感谢!又重新写了一遍这次没有问题了!非常感谢你科普了我没有搞懂的地方【出现prompt的弹框;- 如果此时你点“取消”,照样是会打开新页面,但是没有网址,是一个空白的页面;】

  • 神犬追风
    2017-01-12 17:44:10

    在confirm的时候点击确认----这个函数的返回值是true或 false ,如果确定,返回true,就会执行if下面的2句代码,所以会打开新窗口。prompt(str1,str2)这个函数是获得用户的输入,其中str2是默认帮用户填的值。两个函数共同点是:用户确认前,啥都不能做。可以认为,这就是为什么放在一起介绍的原因吧。


  • DoubleLight
    2017-01-12 17:23:14

    只要你点了confirm中的确认返回true后,就一定要打开新窗口,prompt只是获得你要打开什么网址,跟是否打开无关。