0

私は、他のクライアント内で多くの iframe を使用しているクライアント プロジェクトを使用しています。問題は、絶対親ドキュメントから自動的にすべての iframe に addEventListener を追加したいということです。スキーマの例は次のようになります。

Document: iframe1, iframe2
Iframe1: iframe1.1, iframe1.2
Iframe1.1: iframe.1.1.1, iframe 1.1.2

私はこのようなものをシミュレートしたい:

iframes[i].contentWindow.document.getElementsByTagName('iframe')[0].contentWindow.document.getElementsByTagName('iframe')[i]

私はこのコードを書きましたが、「未定義」のエラーがあります:

 window.onload=function(){
    eventoIframe(document,null,1);
}



var eventoIframe=function(target,prev_target,lvl){
    console.log('Ejecuto funcion por '+lvl+' vez');
    var iframes=target.getElementsByTagName('iframe');
    if(lvl>2){
        var iframes=prev_target.target.getElementsByTagName('iframe');
    }
    if(iframes.length>0){
        for(var i=0;i<=iframes.length-1;i++){
            var iframe=iframes[i].contentWindow;
            iframe.addEventListener("click",function(event){
                console.log('click on:', event.target)
            },false);


            eventoIframe(iframe.document,target,lvl+1);
        }
    }

}
4

1 に答える 1

0

わかりました、間違いを見つけました。なぜ前のターゲットを知りたかったのかわかりません。解決策は

window.onload=function(){
    eventoIframe(document);
}


var eventoIframe=function(target){
    var iframes=target.getElementsByTagName('iframe');

    if(iframes.length>0){
        for(var i=0;i<=iframes.length-1;i++){
            var iframe=iframes[i].contentWindow;
            iframe.addEventListener("click",function(event){
                //code to be execute on each iframe
            },false);
            eventoIframe(iframe.document);
        }
    }

}
于 2013-03-20T10:23:49.373 に答える