7

我在 IE10 中测试了一些脚本,似乎浏览器在设置属性时有问题cols

例子:

parent.middle.document.getElementById("middle_frames").cols = "0,*"

这适用于 SAF/Chrome/FF/IE7/IE8/IE9,但在 IE10 中不起作用。

有人帮忙吗?


我无法在我的项目中显示我的问题,但我制作了一个虚拟脚本来向您展示问题。制作 3 个文件(如下所示)并在 IE10 中运行它们,然后单击“更改列”按钮。适用于除 IE10 以外的所有浏览器。在我的示例中,您看到我使用了 doctype,也尝试了没有 doctype,同样的问题。

frameset_main.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>Framesets</title>
    </head>
    <frameset id="framesets" cols="200,*" frameborder="0" border="0" framespacing="0">
        <frame src="frame1.html" name="frame1" id="frame1" scrolling="vertical" noresize="noresize">
        <frame src="frame2.html" name="frame2" id="frame2" scrolling="vertical" noresize="noresize">
    </frameset>
</html>

框架1.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>Frame 1</title>
    </head>
    <body style="background-color: green;">
    </body>
</html>

框架2.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>Frame 2</title>
        <!-- ONPAGE JAVASCRIPT -->  
        <script type="text/javascript">
        function dothis(){
            parent.document.getElementById("framesets").cols = "500,*";         
        }       
        </script>
    </head>
    <body style="background-color: red;">
    <div id="main_container" class="cls_main_container">
        <input type="button" id="btn_do_this" onclick="dothis();" value="change cols" />
    </div>
    </body>
</html>
4

8 回答 8

11

对我来说,以下似乎有效(它有点像 Raads 修复)

parent.document.getElementById("framesets").cols="0,24%,*";
parent.document.getElementById("framesets").rows=parent.document.getElementById("framesets").rows;  //IE10 bug fix
于 2013-04-09T08:41:52.357 回答
5

Looks like it's IE 10 bug. No resolution so far.

http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/dd6bdecf-5751-4343-8cfd-bcfd7a14b144

于 2012-10-26T20:16:46.280 回答
2

我找到了解决方案

(这是一种解决方法,直到 Microsoft 解决 IE 10 错误):

工作后,.cols我调用一个强制帧重绘的脚本,在您的示例中,结果应如下所示:

parent.document.getElementById("framesets").cols = "500,*";
$('#frame2').forceRedraw(true);

forceRedraw脚本可以在这里找到:Howto: Force a browser redraw/repaint,并且需要一个链接jQuery才能工作。

于 2012-12-05T10:36:01.177 回答
1

我在IE10中遇到了同样的问题。它适用于 IE8 和 IE9,也适用于 IE11 预览版。所以它似乎是一个 IE10 错误。

我最简单的解决方法是一行,不需要插件或附加功能,如下所示:

$('#framesetId').hide().attr('cols', '50,*').show();

这个解决方案在 IE10 中适用于我,并且仍然适用于所有其他现代浏览器。

于 2013-08-16T09:21:07.973 回答
0

经过一番研究,我解决了这个问题,即 10 个错误。我发现只有 'cols' 属性不适用于 iframe,但 'rows' 属性有效,所以我添加了一行,它对我有用。

var frameSet = document.getElementById("uxResultsFrameset");

if ($.browser.msie && $.browser.version == 10) 
     frameSet["rows"] = "100%"; //sets a row to overcome the issue in case of ie10 only

frameSet[orient] = "50%,50%";
于 2013-06-26T07:23:14.190 回答
0

我通过在 cols 属性更新行之后添加这些行(使用 jquery)解决了这个 IE10 错误:

$('#yourframeid').height( $('#yourframeid').height()+1 ); $('#yourframeid').height( $('#yourframeid').height()-1 );

我希望它对你有用...

于 2013-04-24T10:20:18.613 回答
0

这对我有用...

Emanuele 上面描述的重绘方法是正确的解决方案。但是,jQuery 插件站点上不再提供引用的插件。

这对我来说是强制 IE10 设置框架列属性的方法......

1) 创建一个小的 jQuery 插件,它可以立即隐藏和显示一个元素,有效地重绘它。

(function ($) {
    $.fn.redrawFrame = function () {
        return $(this).each(function () {
            $(this).hide();
            $(this).show();
        });
    }
})(jQuery)

2) 在您的 JavaScript 中引用它,如下所示:

$('#framesetId').attr('cols', '50,*').redrawFrame();
于 2013-04-05T18:33:01.450 回答
0

我花了很多时间在这上面。我想在不需要 jQuery 的情况下解决这个问题。
使用此代码使 Internet Explorer 10 对 cols 的更改生效:

parent.document.getElementById("framesets").removeAttribute("cols");
parent.document.getElementById("framesets").setAttribute("rows", "500,*");
parent.document.getElementById("framesets").removeAttribute("rows");
parent.document.getElementById("framesets").setAttribute("cols", "500,*");
于 2013-03-06T14:31:55.927 回答