javascript 子页面调用父页面中的js方法function test()?

javascript 子页面调用父页面中的js方法function test()?,我测试window.parent.test();可以成功,现在的需求是要讲 function test()放到一个js文件当中,父页面用引入外部脚本的方式引入该js文件。这时我再在子页面中使用window.parent.test();就没有反应了。应该怎么写才能满足我的需求?这个test()方法只能直接放到父页面当中?不您恶搞做完车外部脚本?

window.parent与window.opener的区别 javascript调用主窗口方法
1: window.parent
是iframe页面调用父页面对象
举例:
a.html
Html代码 <html>

<head><title>父页面</title></head>
<body>

<form name="form1" id="form1">
<input
type="text" name="username" id="username"/>
</form>

<iframe src="b.html" width=100%></iframe>
</body>

</html>

如果我们需要在b.htm中要对a.htm中的username文本框赋值,就如很多上传功能,上传功能页在Ifrmae中,上传成功后把上传后的路径放入父页面的文本框中
我们应该在b.html中写

Html代码
<script type="text/javascript">
var _parentWin =
window.parent ;
_parentWin.form1.username.value = "xxxx" ;

</script>

实例地址: 实例/a.html
源码:
1.a.html
Html代码

<html>
<head>
<title>主页面</title>

<script>
/** 为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量 */

var parentVairous = "为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量";

function parentInvokeIFrame()
{
var
iframeTest = document.frames["iframeTest"];
//使用document.getElementById("iframeTest");同样可以

alert(iframeTest.document.body.innerHTML);

alert(iframeTest.iFrameVair);
}
</script>

</head>
<body>
<form name="form1"
id="form1">
<input type="text" name="username"
id="username"/>
<input type = "button" value =
"父窗口调用IFrame子窗口中的内容" onclick = 'parentInvokeIFrame()'/>
</form>

<iframe src="b.html" width = '100%' id =
'iframeTest'></iframe>
</body>
</html>

1.b.html
Html代码
<html>
<head>

<title></title>
<script
type="text/javascript">
/**
为测试父窗体调用IFrame子窗体的全局函数而添加的子窗口全局函数 */
var iFrameVair =
"测试父窗体调用IFrame子窗体的全局函数";

function
UpdateParent()
{
var _parentWin =
window.parent ;
_parentWin.form1.username.value = "xxxx"
;
}

function
childInvokeParent()
{
var parentVairous =
window.parent.window.parentVairous;

alert(parentVairous);
}
</script>

</head>
<body>
<form name="form1"
id="form1">
<p> </p>
<p
align="center">
<input type = "button"

name = "button"
id =
"button"
value = "更新主页面的UserName内容"

onclick = "UpdateParent()">

<input type = "button"
name = "button2"

id = "button2"
value
= "测试IFrame子窗口调用父窗口的全局变量"
onclick =
"childInvokeParent();"/>
</p>
<p>
</p>
</form>
</body>
</html>

ps:不能跨域获取,例如iframe的src是'http://www.xxx.ccc/'就不可以
2: window.opener
是window.open 打开的子页面调用父页面对象
实例地址: 实例/a.html
源码:
2.a.html
Html代码

<html>
<head>
<title>主页面</title>

<script type="text/javascript">
/**
为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量 */
var parentVairous =
"为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量";

/**
*
因为不同于IFrame(IFrame有id,window.open()与IFrame的父子窗口的模式不同),
*
所以当是通过window.open()方法打开一个新窗口使, 必须有一个新窗口的对象
* 当然必须先让子窗口弹出来,
才能调用子窗口中的变量, 否则抛出异常
*/
var OpenWindow;

function openSubWin()
{
OpenWindow =
window.open('b.html', 'newwindow', 'height=1024, width=1300, top=0, left=0,
toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no,
status=no');
}
function parentInvokeChild()

{
if(OpenWindow)//当然必须先让子窗口弹出来, 才能调用子窗口中的变量,
否则抛出异常
{

alert(OpenWindow.iFrameVair);
}
}

</script>
</head>
<body>
<form
name="form1" id="form1">
<input type="text" name="username"
id="username"/>
<input type="button" value="弹出子页面" onclick =
"openSubWin()">
<input type="button" value="测试调用弹出窗口中的全局变量"
onclick = "parentInvokeChild()">
</form>

</body>
</html>

2.b.html
Html代码

<html>
<head>

<title>子页面</title>
<script
type="text/javascript">
/** 为测试父窗体调用IFrame子窗体的全局函数而添加的子窗口全局函数
*/
var iFrameVair = "测试父窗体调用IFrame子窗体的全局函数";

function UpdateParent()
{
var _parentWin =
window.opener;
_parentWin.form1.username.value = "xxxx"
;
}
function childInvokeParent()

{
var parentVairous =
window.opener.window.parentVairous;

alert(parentVairous);
}
</script>

</head>
<body>
<form name="form1"
id="form1">
<p> </p>
<p align="center">

<input type="button"
onclick =
"UpdateParent();"
name="button"

id="button"
value="更新主页面的UserName内容">

<input type = "button"
name = "button2"

id = "button2"
value =
"测试IFrame子窗口调用父窗口的全局变量"
onclick =
"childInvokeParent();"/>
</p>
<p> </p>

</form>
</body>

经过hanjs的提醒,确实需要注意的是,模态窗口的子窗口是没有办法修改父窗口页面中的任何内容的。
例如修改:OpenWindow =
window.open('b.html', 'newwindow', 'height=1024, width=1300, top=0, left=0,
toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no,
status=no');
为:OpenWindow =
window.showModalDialog("b.html",'newwindow',"dialogHeight:100px,center:yes,resizable:no,status:no");
在子窗口中当希望修改父窗口中的内容时,会弹出“某某”为空或不是对象的错误,而这里的“某某”就是你想修改的父窗口中的内容
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-30
你要注意加载顺序的问题,只有那个外部文件加载完以后,才能调用其中的函数。追问

我将引入js的语句放到了 引入子页面的语句前面了,然在在子页面中引用的该test()方法。这样还不够么?很着急啊,整半天了

追答

试一试window.onload = function(){
//code
}
这个window对象是那个父页面的。

本回答被提问者采纳

子页面怎样调用父页面里面的js
如果是iframe嵌套的父页面,就用window.parent.父页面函数()如果是window.open打开的子页面,调用父页面的函数就用window.openr.函数

js如何跨页面调用函数?
function parent_click(){ alert("来自父页面");} child.html子页面:代码如下: function child_click(){ alert("调用的子页面函数");}

js如何跨页面调用函数?
function parent_click(){ alert("来自父页面");} child.html子页面:代码如下: function child_click(){ alert("调用的子页面函数");}

iframe 子页面JS如何调用父页面全局变量
\/\/父页面调用当前页面中IFRAME子页面中的脚本childEvent function invokechildEvent(){ var frm = document.frames["ifrChild1"].childEvent(); } 或者调用当前页面中第一个IFRAME中的脚本childEvent { var frm = document.frames[0]; frm.childEvent(); } \/\/子页面调用父窗体的某个按钮的按钮事...

js对iframe内外(父子)页面进行操作
具体操作代码示例如下:在iframe子页面操作父页面元素的JavaScript代码 父页面获取iframe子页面元素的代码 使用jQuery在iframe子页面和父页面操作元素的代码 在iframe中调用父页面方法和变量 父页面对iframe子页面方法和变量的控制在进行操作前,务必确保iframe已经完成加载,避免因提前调用而导致错误。可以...

javascript 能否调用到iframe标签包含页面中的函数
可以的。只要两个页面有一定的关系,无论是通过iframe,还是frameset,甚至是window.open,超链接等等方式,都可以让两个页面之间的js互相调用。注意,是互相调用,也就是说,两者谁都有办法调用另一个的js代码。当然有前提,前提就是两个页面都是你自己的页面,是在同一个域下面的,否则牵扯跨域问题,...

如何用js实现跳转并执行跳转后的页面里的js函数
能实现,但是需要费点周折.首先你需要给传递的页面传个参数.比如 window.location.href="next.html?action=liangliang";在next.html载入完毕后onload事件里执行 获取本页面的url,分析action参数值.然后做相应处理

js window.opener 子页面 父页面 传值
1、建立父级页面,首先建立一个父级页面parent.html,代码如图,一个pop函数方法,一个链接到child.html的iframe标签;2、建立子页面,再新建一个child.html页面,如图,展示一个id=link的div标签,和link的点击事件,因为是调用父级方法,所以需要用到window.parent.pop()方法。3、预览页面,预览页面,...

javascript调用本地程序(调用js文件中的方法)
js调用本地exe文件通过注册表进行打开销孝本地的exe的运行文件。打开记戚扮事本,随便命名,保存下面的内容 需要修改的地方:保存,修改后缀名为reg;双击运行自动生成ChiticData的协议,在Html中写上这个协议即可打开本地运行程亏仔稿序 html编辑javascript调用本地程序提示找不到文件1,誉镇羡确保文件...

javascript函数调用(js在函数里面调用函数)
JS函数如何调用别的函数变量。只要是被同一个html文件引用,那么他就是相通的直接使用就行,比如a.html同时引用b.js和c.js b.js写函数test()c.js可以直接调用test()如果html没有同时引用写两个,你可以自己在b.js中写document.write("scriptsrc='c.js'\/script");然后就可以调用函数了。

相似回答