Javascript iframe src内的Access div元素

Javascript iframe src内的Access div元素,javascript,jquery,html,iframe,scroll,Javascript,Jquery,Html,Iframe,Scroll,我正在尝试创建按钮来上下滚动div。我已经下载了名为vectordiv.js的javascript文件(从这里:) 可以在此处预览javascript文件: 我将此功能与测试div完美结合。注释位于JS文件的顶部,说明如何使用,但基本上您可以调用: vectorDiv('controll element id','div id','direction to scroll') 我有一个带有src=“index.php”的iFrame,例如。。。在index.php中,我有几个div。当我尝试传递d

我正在尝试创建按钮来上下滚动div。我已经下载了名为vectordiv.js的javascript文件(从这里:)

可以在此处预览javascript文件:

我将此功能与测试div完美结合。注释位于JS文件的顶部,说明如何使用,但基本上您可以调用:

vectorDiv('controll element id','div id','direction to scroll')

我有一个带有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;
}

这似乎停止了错误,但没有滚动内部分区。。。有什么想法吗?

您选择的库在跨框架的情况下似乎不起作用。 因此,您可以执行以下操作:

  • 在iframe中实现相同的流
  • 在顶层添加一个按钮,该按钮基本上单击iframe中的按钮
  • 在iframe中隐藏按钮
大概是这样的: 主要内容:


纸卷
Iframe:

<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>

纸卷
滚动我
vectorDiv(‘btn’、‘scrlDiv’、‘down’);

你能给我看一下fiddle中urs的输出吗..我想你不能直接访问iframe的内容。如果你想在iframe中找到一个元素,您必须确保iframe已完成加载,然后必须从iframe获取文档并在该文档中搜索-它与包含iframe的文档不同。
<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>