我试图从另一个帧调用一个函数。但是,当我使用“document.getElementById(frame_id))”时,找不到它。
我检查了文档的innerHTML输出是什么,我需要定位的iframe是另一个iframe中的1层。
在主要的iframe我使用: document.getElementById('player'))但它返回:null
我需要在“菜单”iframe中找到“播放器”iframe。
这是“主要”iframes头部的代码:
function callPlayer(frame_id, func, args){
if(!frame_id) return;
if(frame_id.id) frame_id = frame_id.id;
else if(typeof jQuery != "undefined" && frame_id instanceof jQuery && frame_id.length) frame_id = frame_id.get(0).id;
if(!document.getElementById(frame_id)) return;
args = args || [];
/*Searches the document for the IFRAME with id=frame_id*/
var all_iframes = document.getElementsByTagName("iframe");
for(var i=0, len=all_iframes.length; i<len; i++){
if(all_iframes[i].id == frame_id || all_iframes[i].parentNode.id == frame_id){
/*The index of the IFRAME element equals the index of the iframe in
the frames object (<frame> . */
window.frames[i].postMessage(JSON.stringify({
"event": "command",
"func": func,
"args": args,
"id": frame_id
}), "*");
}
}
}
function switchState()
{
callPlayer('player', 'stopVideo');
}
希望有人理解我的描述..
答案 0 :(得分:1)
您可以使用
window.parent.document.getElementById("player").contentWindow
从“主”iframe中定位“玩家”iframe的窗口对象,并在那里调用其函数。
例如:
window.parent.document.getElementById("player").contentWindow.player_func();
答案 1 :(得分:0)
您可以使用parent
对象来解决main
iframe所在的容器。