2013-07-26 25 views
4

锚我是新来的...希望我做的一切权利;-D滚动父框架中的iframe

我发现有类似问题的几个主题,但他们并不像他们想达到我想要达到的目标。

我有一个长的内容区域的网站,该网站有滚动条。该内容区域内的某处是iframe。此iframe实现了全高度的站点(支持板),并在内容height更改时调整iframe - 因此iframe没有滚动条。现在我想要的是:当我用http://www.mywebsite.com/#new打开网站时,我希望页面向下滚动到iframe,但不仅仅是iframe的起始位置,还有锚位置这个iframe

所以iframe本身不需要滚动(它总是100%的高度),但是父框架应该滚动到位置 - 锚定位置的位置 - iframe

我真的不知道如何解决这个问题。将定位点添加到iframes网址并没有帮助,只是将定位点添加到网站网址中也不起作用。我相信我必须用JavaScript或类似的东西来实现一些东西,但不知道如何!我可以修改两者的代码 - iframe和父站点内的网站!

//编辑
哦,我忘了......我不能跟一个onClick-行动或链接属性(也就是接缝是在一个相关帖子的解决方案),因为它不是在里面跳做同一页。该页面正在重新加载,并应跳转到锚:-D所以它必须工作,当我自己输入的URL ...
希望你明白我的需要!

// EDIT2 可能的框架:

  • 主页是一个WordPress的博客,所以JQuery的是可能的!
  • iframe页面是一个简单的机器论坛(SMF) - 我觉得只有原生JS在这里!
+0

你想普通的JavaScript?你有jQuery,Mootools或其他框架? – Sergio

+0

是啊......对不起!忘了添加这些信息,现在把它添加到最初的帖子! – LordZed

回答

2

这是一个答案,会让你“以正确的方式”。

假设您的iFrame始终位于主页内部的相同位置,您需要将主页滚动至此处:iframe y坐标+ iFrame内部的锚点坐标。

所以我会打电话给你的锚:<a name="anchor1">Here</a>和你的iFrame:<iframe id ="myiFrame" ...

为了得到在页面中的iframe的位置,你可以使用$("#myiFrame").position().top和iFrame中的锚位置$("#myiFrame").contents().find('a[name=anchor]').position().top

所以你的脚本moght样子:

var y = $("#myiFrame").position().top + $("#myiFrame").contents().find('a[name=anchor]').position().top; 
$(window).scrollTop(y) 
+0

这帮了我,谢谢!需要使用偏移量()而不是位置(),但其余的工作finde!谢谢! :)我现在这样做:'jQuery(window).load(function(){ \t id = window.location.hash.slice(1).substr(window.location.hash.slice(1) .indexOf('#')+ 1); \t if(jQuery(“#iframeforum”)。contents()。find('a [id ='+ id +']')。{ \t \t var y jQuery(“#iframeforum”)。offset()。top + jQuery(“#iframeforum”)。contents()。find('a [id ='+ id +']')。offset()。top - jQuery '#top返回')的高度(); \t \t的jQuery(窗口).scrollTop(Y) \t} });' – LordZed

+0

从我可以告诉,这如果iframe是不同的域上是不可能的。有人请纠正我,如果我错了。 – lbstr