在IE中动态设置滚动到iframe

时间:2010-04-07 03:57:39

标签: javascript iframe

我有一个iframe。我通过表单提交设置iframe(不同的域名,如www.google.com)的内容。目前,它的滚动属性设置为“否”。

<iframe name="testFrame" id="testFrame" frameborder="1" scrolling="no" width="500" height="200"></iframe>
<form name="testForm" id="testForm" action="http://www.google.com" target="testFrame"></form>
<button name="testBtn" value="submit" onclick="submitForm();">submit</button>

我想动态地滚动到这个iframe。

$("#testFrame").attr('scrolling','yes');

这适用于Firefox但不适用于IE。还试过:

document.getElementById("testFrame").style.overflow="scroll";

没有运气...... :(请帮帮我......

3 个答案:

答案 0 :(得分:2)

我们可以更改特定div或td的innerHTML(如果我们使用表格)。我正在使用桌子,它运作良好。

这是索引页面的HTML。

<body>  
    <table border="0">
        <tr>
            <td>
                <button name="chk" id="chk" style="height: 50px; width:80px; cursor:pointer;" onclick="scrollme()">Click me</button>
            </td>
            <td id='test' style="border:1px solid">
                <iframe frameborder=0 align=middle  width=100% height=100%  scrolling="no" src='linkframe.php' name='frm' id='frm' marginheight=0 marginwidth=0 ></iframe>
            </td>
        </tr>
    </table>
    <input type="hidden" id="tag" name="tag" value="0"/>
</body>

这是索引页面中的javascript函数。

<script type="text/javascript">
    function scrollme()
    {           
        if(document.getElementById('tag').value==0)
        {
            document.getElementById('test').innerHTML="<iframe frameborder=0 align=middle  width=100% height=100%  scrolling='yes' src='linkframe.php' name='frm' id='frm' marginheight=0 marginwidth=0 ></iframe>";
            document.getElementById('tag').value=1;
        }
        else
        {
            document.getElementById('test').innerHTML="<iframe frameborder=0 align=middle  width=100% height=100%  scrolling='no' src='linkframe.php' name='frm' id='frm' marginheight=0 marginwidth=0 ></iframe>";
            document.getElementById('tag').value=0;
        }
    }
    </script>
在iframe中您可以附加任何页面。由于我的页面很长,我没有在这里展示。我正在使用一个隐藏的输入来跟踪表格单元格的innerhtml(基本上是iframe元素)。

答案 1 :(得分:0)

<iframe src="address" id="IFrame" frameborder=0 horizontalscrolling="no" verticalscrolling="yes"></iframe>

是我在我的网络应用程序中使用的 - 你需要使用与IE中的CSS分开的horizo​​ntalscrolling / verticalscrolling属性。

另见Dreaded iframe horizontal scroll bar can't be removed in IE?

我不知道如何在JQuery等中做到这一点。

修改

我认为可能需要从innerHTML创建 - 使用document.createElement('IFrame')如果我没记错的话JQuery可能会使用它 - 我认为一旦元素被创建,改变这些属性可能不起作用。

尝试使用JQuery或带有ID的HTML创建容器DIV,并调用类似:

var div = $('#MyDivID')
div.html('<iframe src="about:blank" frameborder=0 horizontalscrolling="no" verticalscrolling="yes"></iframe>')
var ifr = div.children(":first-child") // Get the IFrame created using innerHTML
ifr.src = 'ADDRESS'

我真的不知道这是否会起作用,我之前没有使用过JQuery,所以我只是继续使用JQuery文档:-P

答案 2 :(得分:0)

我试图在本地机器中复制场景,我观察到IFrame元素的存在会影响jQuery代码的执行。在页面加载时我试图抛出警告: -

$(document).ready(function() {
            alert("hello");            
        });

但即便是这段简单的代码也不会在IE中出现。一旦我评论了IFrame部分,上面的代码就会正常执行。我尝试了对div等元素的其他jQuery操作,它们都运行顺畅。

只是我的观察或其他人之前也经历过这种情况。