访问iframe src中的div元素

时间:2014-07-24 04:42:01

标签: javascript jquery html iframe scroll

我正在尝试创建按钮来上下滚动div。我已下载名为vectordiv.js的javascript文件(来自此处:http://www.scripterlative.com/files/vectordiv.htm)。

可以在此处预览javascript文件:http://ozesports.net.au/jscripts/vectordiv.js

我有一个完美的测试div。注释位于JS文件的顶部,如何使用,但基本上你打电话:

vectorDiv(' controll element id',' div id',"方向滚动");

我有一个带有src =" index.php"的iFrame例如...在index.php里面我有几个div。当我尝试通过div的名称(' currentroom_left')时,我收到了来自JS的消息说

  

ID为' currentroom_left'的元素未找到。必须配置脚本   在所有涉及的元素之下。

我的脚本位于我的iframe代码和我的控制按钮之下,但是,似乎这个javascript文件无法访问iframe src中的元素...所有文件都在同一个域中,但不在同一个域中目录(不确定是否重要)。

这是代码中找不到我的div id的部分:

this.$ = function( id )
{
  var elem = document.getElementById( id );

  if( !elem || elem.id !== id )
  {
    elem = null;
    alert( 'Element with ID "' + id + '" not found.\n\nScript must be configured at a point BELOW all involved elements.' );
  }

  return elem;
}

我不打算在其他任何地方使用它,所以我没有问题在JS中硬编码我的iFrame id。我尝试将其更改为:

this.$ = function( id )
{
  var elem = document.getElementById('ozechat_iframe').contentWindow.document.getElementById( id );

  alert(elem);

  if (elem == null)
  {
       var elem = document.getElementById( id );
  }

  alert(elem);

  if( !elem || elem.id !== id )
  {
    elem = null;
    alert( 'Element with ID "' + id + '" not found.\n\nScript must be configured at a point BELOW all involved elements.' );
  }

  return elem;
}

这似乎可以阻止错误,但是没有滚动内部div ...任何想法?

1 个答案:

答案 0 :(得分:0)

您选择的库似乎不适用于跨框架案例。 所以你可以做的是:

  • 在iframe
  • 中实现相同的流程
  • 在顶层添加一个按钮,基本上点击iframe中的按钮
  • 隐藏iframe内的按钮

这样的事情: 主:

<html>
<body>
<button id="btn" onclick="document.getElementById('frm').contentWindow.document.getElementById('btn').click()">Scroll</button>
<iframe src="frm.html" id="frm" />
</body>
</html>

I帧:

<html>
<body>
<button id="btn" style="display:none">Scroll</button>
<div id="scrlDiv" style="height:100px">
<div style="height:600px">Scroll me</div>
</div>
<script type='text/javascript' src='vectordiv.js'></script>
<script type='text/javascript'>      
   vectorDiv( 'btn', 'scrlDiv', "down" );      
</script>
</body>
</html>