<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function loadA() {
var f = this.A;
f.location = "v1.html";
test();
}
function test() {
if(this.A.document.readyState != "complete") {
window.setTimeout("test()",10);
} else {
alert(this.A.document.getElementById("v1").value);
window.clearTimeout();
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="">
<IFRAME ID="A" NAME="A"></IFRAME>
<INPUT TYPE="checkbox" onClick="loadA()">
</FORM>
</BODY>
</HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function loadA() {
var f = this.A;
f.location = "v1.html";
test();
}
function test() {
if(this.A.document.readyState != "complete") {
window.setTimeout("test()",10);
} else {
alert(this.A.document.getElementById("v1").value);
window.clearTimeout();
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="">
<IFRAME ID="A" NAME="A"></IFRAME>
<INPUT TYPE="checkbox" onClick="loadA()">
</FORM>
</BODY>
</HTML>
<input onclick="alert(document.frames['ifr'].document.all.f1.v1.value)" type="button" value="get">
var f;
function fff()
{
f = this.a;
f.location="1.htm";
}
</script>
<script for=a event=onload>
alert(f.document.getElementById('f1'));
</script>
<body onload=fff()>
<iframe id=a name=a></iframe>
</body>
function f()
{
//var f = this.a; //this指的是f()本身
var f = window.framse['a'];
f.location="1.htm";
alert(f.document.getElementById('f1')); //这里总是拿到null
}
</script><body onload=f()>
<iframe id=a name=a></iframe>
</body>
这样应该可以了
可是还有点不明白的是
this.A.document.getElementById("v1").value
这里直接拿v1的值竟然可以拿到,而我如果换成f1,则还是拿到null,觉得有点怪不过总算能行了,多谢大家ps:
to flyskytoday(光风.每天进步一点):
我忘了说,我不要用button按了才拿到东西的,是在2.htm一load我就要它自己拿到1.htm里面的东西to zhuqm(东子):
按你的方法还是不行 :(
发完了回复又发现不行了,还不让我删掉我自己的回复,晕是这样,那个test()确实可以一直等到document.readyState == "complete"为止,可是
function loadA() {
var f = this.A;
f.location = "v1.html";
test();
// 我的本意是想在这里就用v1的值了,也就是在给f.location赋值之后马上用
// 可是如果我在这里写
// alert(this.A.document.getElementById("v1").value);
// 这句话还是会object error...
// 我的感觉是 test() 并没有使脚本的执行中断IE还在继续下面的语句
// 晕啊,受不了IE了
}对了,我还是不能要通过 onclick 这样来获取值,我需要的就是 2.htm 一打开就有 1.htm 里面变量的值了或者,我这种想法根本无法实现?
function test() {
if(this.A.document.readyState != "complete") {
window.setTimeout("test()",10);
} else {
window.clearTimeout();
//也就是放在这里...不过感觉有点怪,不在同一个function做完我想做的事
}
}
晕怎么把你的漏了,真是不错啊,测试成功,不过不大明白 //blush
onload正好在download complete时发生.
f.location = "1.htm";
的后面加上:
while (1)
{
if (f.document.readyState == "complete")
break;
else
pause(10);
}关键是这个pause,不能用setTimeout,因为setTimeout并不会暂停IE继续处理脚本,找了半天终于找到个仿真的程序:
/*
* This function will not return until (at least)
* the specified number of milliseconds have passed.
* It uses a modal dialog.
*/
function pause(numberMillis) {
var dialogScript =
'window.setTimeout(' +
' function () { window.close(); }, ' + numberMillis + ');';
var result =
window.showModalDialog(
'javascript:document.writeln(' +
'"<script>' + dialogScript + '<' + '/script>")');
}虽然它是说通过showModalDialog来暂停IE的执行,可是我测试发现没有任何dialog显示出来,真好满足我的需要。