2013-06-13 13 views
5

iframe外のリンクからjQuery.animateを使用してiframe内のdivに移動したいとします。 これは私が使用するコードです:iframe内の要素に「オフセット」を適用するにはどうすればよいですか?

function scrollToAnchorIframe(aid){ 
    var aTag = window.frames['myFrame'].document.getElementById(aid); 
    $('html,body').animate({scrollTop: aTag.offset().top - 62},'slow'); 
} 

しかし、それはエラーをログに記録する、「Object [object HTMLElement] has no method 'offset'」を動作しません。それを動作させるためにIDのオフセットを取得する方法はありますか?

アップデート(解決): 私が今使っているコードです:

function scrollToAnchorIframe(aid){ 
    var aTag = window.frames['myFrame'].document.getElementById(aid); 
    jQuery('html,body').animate({scrollTop: $(aTag).offset().top + $("#myFrame").offset().top - 62},'slow'); 
} 
+5

オブジェクトがjQueryオブジェクトではないため、このエラーが発生しています。これはHTMLElementです。 '$(aTag).offset()'を試してみるか、 'window.frames ['myFrame']。を' $() 'に入れてください。 – crush

+0

Xフレームプログラミングは、あなたは同じプロトコルで同じドメインで作業します。 – ARMBouhali

答えて

4

aTagはインラインフレームを容器の内側に置かれている場合、それjQueryオブジェクト

$('html,body').animate({scrollTop: $(aTag).offset().top - 62},'slow'); 
+0

ありがとう!それがトリックでした。ここでは私が今使っている完全なコードです: 'function scrollToAnchorIframe(aid){ var aTag = window.frames ['myFrame']。document.getElementById(aid);jQuery( 'html、body')。animate({scrollTop:$(aTag).offset()。トップ+ $( "#myFrame")オフセット()トップ - 62}、 'スロー'); } ' – Georg

+0

@Georg Cheers !! –

+0

@モハマド・アジル:ありがとうございました。 –

0

行い、DOM要素でありますここでは親ページのコンテナからiframeのブックマークのアンカーに移動するためのアップデートがあります(注意: "window.frames"はFFブラウザとの互換性のバグがあるので、代わりに "contentWindow"を使用します) ):

function iframeBookmark(anchor) { 
mytag = document.getElementById("iframeID").contentWindow.document.getElementById(anchor); 
pos1 = $(mytag).offset().top; 
pos2 = $("#iframeID").offset().top; 
if (pos2 > pos1) { 
    $("#iframeContainerID").animate({scrollTop: pos2 - (pos2 - pos1) },'slow'); 
    } 
else { 
    $("#iframeContainerID").animate({scrollTop: pos2 + (pos1 - pos2) },'slow'); 
    } 
} 

私たちは、親HTMLから関数を呼び出すときに、アップ/ダウンスクロールは、iframeの現在位置に応じて異なります

<a onclick="iframeBookmark('iframeBookmarkID')">...</a> 

...「iframeBookmarkIDは」ブックマークのIDですiframeページのアンカー。

関連する問題