gpt4 book ai didi

internet-explorer-8 - TextRange offsetLeft和offsetTop在Internet Explorer 8标准模式(IE8)中损坏

转载 作者:行者123 更新时间:2023-12-04 03:59:27 25 4
gpt4 key购买 nike

查找文本范围的位置时(例如当前选择的文本),我似乎已经发现Internet Explorer 8出现问题。我找不到能够在StackOverflow或其他地方找到此问题的任何报告。

TextRange.offsetLeft和TextRange.offsetTop报告范围的左上角,在我在IE8中看到的所有情况下,它们都大致正确,除非范围在IFrame内。当范围在IFrame内时,offsetLeft和offsetTop的值相对于IFrame在其父级中的位置偏移负数。 (请参见下面的示例)

仅在以下情况下会出现此问题:

  • 浏览器是IE8
  • 页面处于标准模式

  • 在以下情况下会出现 而不是这个问题:
  • 浏览器是IE7或IE10
  • 页面处于怪异模式

  • 我的问题:
  • 其他人可以确认这个问题还是我疯了?
  • 这是一个已知问题吗?
  • 是否有任何合理的解决方案或解决方法? (一种理智的解决方案是,框架中的JS不需要了解其父窗口的任何信息)

  • 谢谢。

    问题的一个示例:(请参阅IE8与IE9的区别)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>IE8 IFrame Text Range Position Test Page</title>
    <style type="text/css">
    body {
    font-family: Tahoma;
    }
    #target {
    background-color: #CCC;
    position: absolute;
    left: 50px;
    top: 50px;
    }

    #bullsEye {
    position: absolute;
    background-color: red;
    width: 5px;
    height: 5px;
    }

    iframe {
    margin: 10px 75px;
    }
    </style>
    <script type="text/javascript" charset="utf-8">
    function target() {
    var range = document.body.createTextRange();
    range.moveToElementText(document.getElementById('target'));
    range.select();
    var bullsEye = document.createElement('div');
    bullsEye.id = 'bullsEye';
    bullsEye.style.left = range.offsetLeft + 'px';
    bullsEye.style.top = range.offsetTop + 'px';
    document.body.appendChild(bullsEye);
    document.getElementById('output').innerHTML = 'range.offsetLeft = ' + range.offsetLeft + ', range.offsetTop = ' + range.offsetTop;
    }
    </script>
    </head>
    <body>
    <div id="target">Target</div>
    <input type="button" value="Hit Target" onclick="target();"> <span id="output"></span>
    <br><br><br><br><br>
    <script>
    if (window.parent == window) document.write('<iframe src="?tfr" height="150" width="500"></iframe>');
    </script>
    </body>
    </html>

    最佳答案

  • 我仍然相信这是IE8中的错误,但是有一种解决方法
  • 在标准模式下,请使用boundingLeftboundingRight。但是在怪癖模式下,请使用offsetLeftoffsetRight
  • 关于internet-explorer-8 - TextRange offsetLeft和offsetTop在Internet Explorer 8标准模式(IE8)中损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591903/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com