我如何以子窗口中调用呢?
===========Code如下:
父窗中的方法:
//功能:获得指定值的数组索引.
Array.prototype.indexOf = function(o){
for(var i=0;i<this.length;i++)
if(this[i]==o)return i;
return-1;
};
---------------------------
子窗口(和父窗口是opener关系)中有一数组:
new aArr=['A','B','C'];
alert(aArr.opener.indexOf('B') ) //想在此调用indexOf得到返回值.(此句执行错误)
============Code End
可以解决吗?
5 个解决方案
#1
子窗口中,aArr和opener是同级的,所以不能像你那么用。
——另,因为你在父窗口中用了匿名函数,所以在子窗口中用opener.indexOf('B')也是错误的!
最常规的办法,修改子窗口代码为:
var aArr=['A','B','C'];
Array.prototype.indexOf=opener.Array.prototype.indexOf;
alert(aArr.indexOf("B"));
——另,因为你在父窗口中用了匿名函数,所以在子窗口中用opener.indexOf('B')也是错误的!
最常规的办法,修改子窗口代码为:
var aArr=['A','B','C'];
Array.prototype.indexOf=opener.Array.prototype.indexOf;
alert(aArr.indexOf("B"));
#2
try:
alert(opener.Array.prototype.indexOf.call(aArr, "B"));
alert(opener.Array.prototype.indexOf.call(aArr, "B"));
#3
何必这样呢,用prototype为Array添加一个方法indexOf,但这个方法最好放在一个公共的global.js文件,然后所有网页都引用global.js文件
#4
个人觉得做成JS文件比较方便,不用绕弯路,更多的页面也可使用。
#5
fason用的call是正解。
以前没有用过call,汗如雨下……
学习!
以前没有用过call,汗如雨下……
学习!
#1
子窗口中,aArr和opener是同级的,所以不能像你那么用。
——另,因为你在父窗口中用了匿名函数,所以在子窗口中用opener.indexOf('B')也是错误的!
最常规的办法,修改子窗口代码为:
var aArr=['A','B','C'];
Array.prototype.indexOf=opener.Array.prototype.indexOf;
alert(aArr.indexOf("B"));
——另,因为你在父窗口中用了匿名函数,所以在子窗口中用opener.indexOf('B')也是错误的!
最常规的办法,修改子窗口代码为:
var aArr=['A','B','C'];
Array.prototype.indexOf=opener.Array.prototype.indexOf;
alert(aArr.indexOf("B"));
#2
try:
alert(opener.Array.prototype.indexOf.call(aArr, "B"));
alert(opener.Array.prototype.indexOf.call(aArr, "B"));
#3
何必这样呢,用prototype为Array添加一个方法indexOf,但这个方法最好放在一个公共的global.js文件,然后所有网页都引用global.js文件
#4
个人觉得做成JS文件比较方便,不用绕弯路,更多的页面也可使用。
#5
fason用的call是正解。
以前没有用过call,汗如雨下……
学习!
以前没有用过call,汗如雨下……
学习!