2011-12-29 4 views
0

私は同じドメインでうまく動作するセッション機能を持っていますが、他のサイトのapiで使用すると、トップフレームから設定して呼び出しているため動作しません(top.functionName、top.variable)。私が探しているのは、まだドメインに残っている最も高いフレームから変数と関数を設定する方法です。たとえば、トップフレームはexternaldomain.comであり、その中のフレームはourdomain.comであり、フレームはourdomain.com/somepageなどであるかもしれません。同じドメインにまだあるトップに最も近いものを得るためにフレームをどのようにループするのでしょうか?まだドメイン上にある最高のフレームを取得

ありがとう、

答えて

4

次の関数は、最も近いフレームを返します。リーダの出所が異なる場合、documentプロパティを読み取ることができないため、フレームが同じ原点にないとエラーがスローされます。

フィドル:fiddle.jshell.netとjsfiddle.net:http://jsfiddle.net/txmdL/3/
JSfiddle、2個のドメインで実行されます。私はデモに複数のfiddle.jshell.netの組み込みを埋め込んでいます。トップに達した

  • :期待通りにスクリプトが動作する場合、ボタンでクリックする場合にのみ解除されますhttp://fiddle.jshell.net/txmdL/3/show/

    function getClosestTop(){ 
        var frame = window; 
        try { 
         while (frame.parent.document !== frame.document) frame = frame.parent; 
        } catch(e){} 
        return frame; 
    } 
    

    whileループを含むダイアログが表示されます。 top.document !== documentfalse

  • と評価されます。親ウィンドウは同じ起点ではありません。エラーが発生します。
関連する問題