2017-06-28 17 views
0

iframe内にdivがあります(両方のドキュメントが同じアプリケーション/ドメインのものであるため、元のポリシーに問題はありません)。私は親ウィンドウの上からdivの距離を把握する必要があります。 iframeにもスクロールバーがあるので、これも考慮する必要があります。親ウィンドウ上からiframe divの距離を特定する

クロスオリジンポリシー(iframe.contentWindowは使用できません)のため半製品jsfiddleを作成できませんが、ここでは動作していません fiddleです。

私はフィドルに埋め込まれIFRAMEを持っている:

<iframe src="https://noc2spam.github.io/embed.html?ddd" style="display:block; border:0; width:300px; height:200px; overflow:scroll"></iframe> 

次のスクリーンショットはあなたに私がまさに必要なもののアイデアを与えるかもしれません。

no description

私はすでにのiframeのための作業をいないようだ答えのいくつかを試してみました。たとえば、thisは機能しません。これを行う最も便利な方法は何ですか?

+0

あなたがこれを必要ですか? http://jsfiddle.net/Rxs2m/1070/ ページのスクロールを開始 – Kirill

+0

@Kirill質問に記載されているように、この特定の解決策はiframeでは機能しません:(はい、これは正確に必要ですが、要素はスクロール可能なiframeにあります。 – Gogol

+0

このコードにはiframeがあり、正常に動作します – Kirill

答えて

0

iframeに含まれるdivの上からオフセットを取得するには、IFRAME内のDIVオフセットをmainWindow内のIFRAMEのオフセットにSUMする必要があります。 (IFRAMEとメインウィンドウの間とのpostMessage)のjQueryでそれを行うには :

/** 
 
supposed: 
 
#example-iframe = id of iframe 
 
#example-div = id of DIV inside the iframe 
 
*/ 
 
/** main.html -- top page */ 
 
$("#example-iframe")[0].contentWindow.postMessage({ 
 
    cmd:"getDivDistance" 
 
}); 
 
window.onmessage = function(e){ 
 
    var msg = JSON.parse(e.data) 
 
    switch(msg.cmd){ 
 
     case "setDivDistance": 
 
     var frametop = $("#example-iframe").offset().top 
 
     var totaltop = frametop + msg.top; 
 
     alert("MY TOP IS "+totaltop); 
 
     break; 
 
    } 
 
}; 
 

 

 
/** frame.html -- iframe page*/ 
 
window.onmessage = function(e){ 
 
    var msg = JSON.parse(e.data) 
 
    switch(msg.cmd){ 
 
     case "getDivDistance": 
 
     window.top.postMessage({ 
 
      cmd:"setDivDistance", 
 
      top:$("#example-div").offest().top 
 
     }); 
 
     break; 
 
    } 
 
}

+0

これを試してみましょう..もしうまくいくなら、私は解決策を受け入れるでしょう:) – Gogol

+0

この作品もクロスフレームiframe(postMessageのため) – MadPapo

+0

ソリューションは機能しましたか? – MadPapo

関連する問題