我想通过javascript在一个新窗口打开一个网站,然后延迟几秒后得到它...
发布网友
发布时间:2022-04-23 07:43
我来回答
共9个回答
热心网友
时间:2022-04-23 18:43
花了我一整个晚上,才搞定你的提问。怕说不清楚,写的长了些,希望可以写明白让你看懂。
先说说你程序的错误:
第一个:open方法有4个参数,其中第二个参数你没有写,它是控制打开URL的方式,比如说在新窗口打开,在父窗口打开,或者在自身窗口打开等等,你不写的话这个方法就要出错,怎么也要写个“null”呀。
想知道它的具体情况,我也在帮助文件里找好了,内容如下
---------------------------------------------------------------------------------------------------------
*********可以先略去不看********
Optional. When opening up a new document, specifying the String replace for sName designates that the new document is to replace the current document in the history list. If the value replace is not specified when opening up a document, a new entry will simply be added to the history list. When opening a window, this is a String that specifies the name of the window. The value of this parameter may be specified as the value of the TARGET attribute for a form or a element. This value will then will define this new window as the place to load a document. replace This value is only used for opening up a new document and specifies that the new document is to replace the current entry in the history list.
_blank When opening a window, the sUrl is loaded into a new, unnamed window.
_parent When opening a new window, the sUrl is loaded into the current frame's parent. If the frame has no parent, this value acts as the value _self.
_search Available in Internet Explorer 5 and later. When opening a window, the sUrl is opened in the browser's search pane.
_self When opening a window, the current document is replaced with the specified sUrl .
_top sUrl replaces any framesets that may be loaded. If there are no framesets defined, this value acts as the value _self.
_media Available in Internet Explorer 6 and later. The sUrl is loaded in the Media Bar.
--------------------------------------------------------------------------------------------------
第二个:setTimeout方法调用的hello方法你没有加括号,由于javascript的变量可以不用声明直接使用,少了括号的话,这样它就成了变量,而不是你想要的hello方法。
window.onload=openwin;这一句同样没有加括号。
第三个:setTimeout调用的方法hello要加“”号,你没有加。
**************************************************************
**************************************************************
挑完错,得来点实在的有用的,代码已写好,
你自己先看看,不懂的再问,好吗
下边的代码我已经多次测试过,直接复制就可以用
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>answer</title>
</head>
<body>
<script type="text/javascript">
var s="http://www.sina.com.cn ";
function openwin(){
s="http://www.sina.com.cn "
var win=window.open(s,"null","height=100,width=100,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
setTimeout("hello()",5000);
}
function hello(){
alert(window.s);
}
window.onload=openwin();
</script>
</body>
</html>
楼主在hello方法里的alert(win.location.href);语法并不错,可以获取URL。只是调用它的对象不能是win。可以改成alert(window.location.href);加上去,程序一样可以显示出来,说明这句话语法是对的。
还有就是,在javascript里边,可以让它报错的,这个要对IE浏览器进行设置,方法如下:
IE浏览器----工具----internet选项----高级,把“禁用脚本调试”前边的勾去掉,把“显示每个脚本错误的通知”前边打上勾。就OK了,以后IE报错的时候,可以查看详细信息。
热心网友
时间:2022-04-23 20:01
首先解决下面回答人的疑问 script 里面是不会报错的除非你自定义的有、有错的地方script 就不会运行起走了。 然后我解决楼主的问题
1、你在script 里面写的window.onload 为什么不写在jsp页面的body里面 onload="openwin()"这样就避免了浏览器版本的不支持
2、我实在不理解 你的win.location.href 是怎么获取到URL的 你的win是获取到http://www.sina.com.cn返回回来的值 也就是要在http://www.sina.com.cn 里面写到window.returnValue="";win才能接收到这里的数据
3、你的win.location.href 在script里面 我只知道 有一个是跳转页面并没有听过或者使用于获取URL
4、综上你可以试试 1的提示 和在http://www.sina.com.cn 的script里面加上 window. returnValue="http://www.sina.com.cn";然后把win.location.href改为 win
热心网友
时间:2022-04-23 21:36
你哪个open方法少了个参数。 必须要一个窗体名参数。
function openwin(){
var win=window.open("http://www.sina.com.cn","name","height=500,width=500");
setTimeout(hello,5000);
function hello(){
alert(win.location.href);
}
}
window.onload=openwin;
这段就可以执行。
可以用窗体名拿到他的属性等等。
热心网友
时间:2022-04-23 23:27
<script language="javascript">
function openwin(){
var win=window.open("http://www.sina.com.cn","height=100,width=100,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
setTimeout(hello,5000);
function hello(){
alert(win.location.href);
}
}
window.onload=openwin;
</script>
问题是win.location.href这个显示不出来,如果不写setTimeout延迟的话,显示的则是about:blank。请问哪里写错了,谢谢!
热心网友
时间:2022-04-24 01:35
额,等到子窗口打开的时候再去获取的话就造成跨域了,所以win.location.href就没值了,没跨域是可以的
热心网友
时间:2022-04-24 04:00
你这样写都知道你打开的是什么网页也
为什么还要这样取呢?
延时这段时间,还会有别的操作吗?
热心网友
时间:2022-04-24 06:41
调用方法不用加括号的吗? 或许我真的不懂你那个onload是怎么样的一个用途 且好像你也没有调用hello 的方法
热心网友
时间:2022-04-24 09:39
你用FireBug调试下就知道问题出在哪里了
热心网友
时间:2022-04-24 12:54
执行时,
win.location.href
这一句报错,你那里没 有吗?