<!DOCTYPE html> <html> <head> <title> new document </title> <meta http-equiv="Content-Type" content="text/html; charset=gbk"/> <script type="text/javascript"> function openwindow() { window.open('http://www.imooc.com/','null','width=400,height=500,menubar=no,toolbar=no') } var mymessage=confirm("是否打开新窗口?"); if(mymessage==true) { openwindow() } else { document.write("您取消了操作"); } // 新窗口打开时弹出确认框,是否打开 // 通过输入对话框,确定打开的网址,默认为 http://www.imooc.com/ //打开的窗口要求,宽400像素,高500像素,无菜单栏、无工具栏。 </script> </head> <body> <input type="button" value="新窗口打开网站" onclick="openWindow()" /> </body> </html>
第一次提交后自己弹出的提示框,点完确认后闪一下就关了,第二次去点按钮点击确认完才开的网页?
首先,HTML语句是顺序执行的。你先写了完整的openwindow函数,中间if内又引用了openwindow(),所以点提交后,还没有点”新窗口打开网站“按钮就直接自动跳转到提示框,使最后的onclick="openWindow()"
语句没来得及执行。
其次,至于你说的:第一次提交后自己弹出的提示框,点完确认后闪一下就关了,第二次去点按钮点击确认完才开的网页?
我测试结果是:第一次提交并确认后能正常打开新窗口,如果不把新窗口关闭就直接第二次提交并确认,是不会再打开另一个新窗口的,关闭第一个窗口后才会打开第二个。
你先定义了完整的函数,if内的就只能改成window.open(.....)才不会调用函数,但是这样一来你的代码就完全乱了,函数的定义就显得有点鸡肋。按照你的思路,我能力有限,想不到怎么改。 下面是我写的一个代码例子,你可以看一下。我的思路是将所有的语句都包括在openwindow()函数内,即<script>到</script>内的内容都是函数的定义,最后的再用onclick="openWindow()引用函数就行了。 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>openwindow</title> <script type="text/javascript"> function openwindow(){ var open=confirm("确定要打开新窗口吗?") ; if(open==true) { var net; net=prompt("请输入你想打开的网址:",) ; //括号里面的逗号不能少,不然输入的网址不能正常赋值给net。可以输入任意你想访问的网址 //逗号后加"http://www.imooc.com/"的话,就会默认要打开的新窗口是http://www.imooc.com if(net!=null) { window.open(net,'_blank','width=400,heigh=500,menubar=no,toolbar=no'); //window.open()内的net不用单引号括起来 } else { //可考虑用正则表达式判断网址是否正确 alert("你输入的网址错误"); } } else { window.close(); } } </script> </head> <body> <input name="button" type="button" onClick="openwindow()" value="点击我,打开新窗口" /> </body> </html>