Firefox 的 getBoundingClientRect 问题

2024-03-06

我正在尝试使用 getBoundingClientRect() 获取 contenteditable div 中光标的 y 坐标。代码的 IE 分支可以工作,但另一个分支(即用于我当前测试目的的 Firefox 3.5)则不能。

下面的代码在注释中用 *** 标记了有问题的行。在代码中的这一点上, selObj 和 selRange 都有一个值(在 Firebug 中确认),但我无法在它们中的任何一个上调用 getBoundingClientRect() (例如 selObj.getBoundingClientRect 不是一个函数)。我读到, Firefox 现在支持 Range 对象上的 getBoundingClientRect() ,但我无法让它工作。我想我一定是在错误类型的对象上调用它......?我应该用什么来称呼它?

以下代码是完整的测试用例,作为包含相关 JavaScript 的 html 文件。在 IE 中查看,我得到了光标 y 坐标的值,但在 Firefox 中它会弹出。

<html>
<head>
<title>Test</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
#pageContainer {
    padding:50px;
}
.pageCommon {

    width: 100px; 
    height: 100px;
    background-color:#ffffD0;
    padding: 10px;
    border: 1px solid black;
    overflow: auto;
}


</style>
</head>
<body>
<div id="pageContainer">
    <div id="editor" class="pageCommon" contenteditable onclick="setPageNav();" onkeypress="setPageNav();">

    </div>
    <div>y: <span id="y"></span></div>

</div>
<script>
var y;

function setPageNav() {

    page = document.getElementById("editor"); 
    if (window.getSelection) {
            var selObj = window.getSelection();
            var selRange = selObj.getRangeAt(0);
            // *** Neither of these next two lines work, error is : selObj.getBoundingClientRect is not a function
            y = selObj.getBoundingClientRect().top;
            y = selRange.getBoundingClientRect().top;
    } else if (document.selection) {
            var range = document.selection.createRange();
            y = range.getBoundingClientRect().top;
    }
    document.getElementById("y").innerHTML = y;
}

</script>
</body>
</html>

我读到 Firefox 现在支持 Range 对象上的 getBoundingClientRect()

还没有,还不是。这是 Firefox 3.7 中可以期待的 Mozilla 1.9.3 功能。

无论如何,您都需要后备,因为任何其他浏览器都不支持它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox 的 getBoundingClientRect 问题 的相关文章

  • 将随机字符串转换为十六进制颜色

    我的应用程序中有一个操作日志表 我想根据该条目的 sessionID 为行分配随机颜色 以帮助查看模式 分组操作 到目前为止我有这个 console log stringToColorCode mj3bPTCbIAVoNr93me1I fu
  • 具有两组子组件的 React 组件

    我正在创建一个组件 需要接收两组子组件并放置在组件的两个不同部分中 let CreditCardForm icons fields gt div div div div icons div div div fields div let Cr
  • React JS - 单击时更改颜色并将默认颜色放在所有其他颜色上

    我有 x 个渲染数文章预览依赖于 API 调用的组件 div div Object keys images map index i gt return div div
  • 根据用户区域设置过滤字符串列表

    当使用 AngularJS 1 6 处理 JavaScript 项目时 我有一个要过滤的字符串列表 例如 假设我的列表包含 rbol cig e a nido and tubo 当过滤西班牙语字符串时 如果我过滤 u 我会期望两者cig e
  • 通过 Javascript 将图像切割成碎片

    我正在创建一个简单的拼图游戏 为了做到这一点 我需要将我正在使用的图片切成 20 块 Javascript 有没有办法将一张图片切成 20 个相等的部分 并将它们保存为网页中的 20 个不同的对象 或者我只需要进入 Photoshop 自己
  • javascript中输入类型时间的值

    我有这个html
  • JSON对象的长度[重复]

    这个问题在这里已经有答案了 该函数生成一个包含 json 对象的数组 var estoque function unpack estoque tnm total estoque vl id tid st tnm tnm split tota
  • 缩放事件侦听器之前的 Javascript OpenLayers

    我正在尝试将 OpenLayers 设置为在缩放开始之前不显示矢量图层 并使其在缩放结束后重新出现 我已经像这样建立了缩放结束部分 map new OpenLayers Map map element eventListeners zoom
  • 默认情况下嵌入带字幕的 Youtube 不起作用

    我正在尝试嵌入 Youtube 电影 并希望默认情况下打开字幕 From https developers google com youtube player parameters cc load policy https develope
  • 嵌套辅助函数和性能

    嵌套辅助函数对于使代码更易于理解非常有用 谷歌甚至建议在他们的应用程序中使用嵌套函数时尚指南 https google styleguide googlecode com svn trunk javascriptguide xml Nest
  • 这种 JavaScript 编码风格有什么问题? (闭包与原型)

    我们一直在讨论如何最好地处理我们的 JS 应用程序中的对象 研究 Stoyan Stefanov 的书 阅读无数关于 新 这个 原型 闭包等的 SO 帖子 事实上有很多 而且它们有这么多相互竞争的理论 表明没有完全明显的答案 让我们假设我们
  • Javascript 正则表达式来匹配正则表达式

    我正在研究一个特殊的正则表达式来匹配 javascript 正则表达式 现在我有这个正则表达式工作 i g m 例如 foo match i g m gt foo foo undefined foo i match i g m gt foo
  • 为 Meteor 数据创建编号列表

    有没有办法获取 Meteor 集合中项目的编号列表的 编号 我知道我可以在 html 中做到这一点 但我觉得如果我可以在 spacebars 中放置一些东西 那么样式会更容易 如果我可以使用更好的术语 请告诉我 像这样的东西 前 20 部电
  • 为什么 document.getelementbyId 在 Firefox 中不起作用?

    我不明白为什么 document getElementById 在 Firefox 中不起作用 document getElementById main style width 100 当我检查 Firebug 时 它说 类型错误 docu
  • 使用本机 JavaScript 获取过渡中的 CSS 值

    这个问题之前被问过 但答案使用了 jQuery here https stackoverflow com q 8920934 3186555 因此 我将调整问题以专门询问native解决方案 to 最小化依赖关系 假设您有一个 div 然后
  • Cosmos DB 中的 MaxItemCount 源选项属性不起作用

    我正在尝试编写一个运行 SQL 查询的简单存储过程 并且我想通过使用 MaxItemCount 属性来限制结果 查询生成 3 个文档 但我只想返回 1 个文档 我使用 MaxItemCount 属性强制执行此限制 但这似乎不起作用 func
  • 为什么从浏览器上传到 S3 时出现 403 错误?

    因此 我尝试查看此处之前的答案 但似乎没有任何效果 我正在使用 Dropzone 它似乎发出 OPTIONS 请求来获取所有允许的 CORS 相关信息 但它似乎没有正确返回 因此 通过查看 Chrome 开发工具 我有以下请求标头 Host
  • 在角度控制器中监听文档事件

    如何捕获角度控制器中的事件 我有文档级事件 所以我需要在角度控制器中捕获事件 这可能吗 Update 我有独立的 js 文件来处理来自相机的一些操作 document addEventListener myCameraEvent handl
  • Nodejs 一个接一个地运行异步函数

    我是 JS nodejs 的新手 所以如果我不能提出切中要害的问题 请原谅我 所以基本上 如果我有两个异步函数 async function init async function main 如何确保在 init 完成其异步请求后调用 ma
  • 利用重力效果拖动元素

    我想完成类似于 photoshop com 和此网站的功能 http mrdoob com projects chromeexperiments google gravity http mrdoob com projects chromee

随机推荐

  • 在 Qt 中使用 .pri 文件

    这是这个问题的后续如何在qt creator中为项目创建子目录 https stackoverflow com questions 1176666 how to create a subdirectory for a project in
  • “您必须指定 input_ids 或 input_embeds”,但我确实指定了 input_ids

    我训练了一个基于 BERT 的编码器解码器模型 EncoderDecoderModel named ed model使用 HuggingFace 的变压器模块 我用的是BertTokenizer命名为input tokenizer 我用以下
  • 在 aws lambda 上使用 Log4J2 进行日志记录 - 未找到类

    我正在尝试使用 Log4J2 日志记录 如 AWS 文档中所述 https docs aws amazon com lambda latest dg java logging html java wt logging using log4j
  • 查找旧版 firebird/Interbase 数据库密码

    我的一位客户有一个不存在的旧应用程序 他与制作该应用程序的公司有问题 他们不会透露他的数据库密码 他意识到他签署了一份合同 当时 其中说他是在 租用 该应用程序 他们无权透露任何内容 这位客户发现他并不是唯一一个与该公司有同样问题的人 他是
  • 转换二叉树中的嵌套列表的列表

    在 python 中 我有一个代表二叉树的嵌套列表列表 L 0 1 2 3 4 5 6 所以树可以如下所示 0 1 4 2 3 5 6 我现在想要实现一个函数 该函数将树的级别作为输入并返回该级别的所有节点 GetNodes 0 0 Get
  • 将 HTTP POST 与 typeahead js 和 Bloodhound js 结合使用

    默认情况下 bloodhound js 将通过 HTTP GET 进行查询 但这使您容易受到JSON劫持 http haacked com archive 2009 06 25 json hijacking aspx 由于我想将敏感信息加载
  • 显示 Ajax 调用进度的最佳方式是什么?

    我有一个 Ajax 调用 它更新数据库中的 5 000 条记录 因此这需要很多时间 我有一个 Ajax 正在加载图像 显示正在发生某些事情 但我正在寻找更好的方法来显示 更新 5000 个中的 50 个 更新 5000 个中的 200 个
  • 尚未为模型“ResourceSchema”注册架构。 - 巢.js

    大家好 我正在尝试使用 Nest js 和 mongodb 构建 api 我正在尝试在架构之间建立关系 当我尝试从角色填充资源时出现错误 Nest 12308 2019 08 09 4 22 PM ExceptionsHandler Sch
  • 如何在类的范围内访问“self”?

    我遇到了一个有趣的问题 假设我们有一个类 在它的构造函数中我们采用一个布尔值作为参数 如何根据实例的条件 布尔值在类内定义方法 例如 class X def init self x self x x if self x true self
  • 找不到资源 | ANT 重命名应用程序包

    经过大量挖掘后 我找到了如何重命名应用程序包的解决方案 效果很好 有两种不同的方式 通过 arg 参数的一个
  • 如何在gridview中有效加载互联网图像?

    我使用以下示例在我的活动中显示互联网图像 http developer android com resources tutorials views hello gridview html http developer android com
  • 当我遵守协议时分配给 id 的警告

    我的视图控制器符合 UITextFieldDelegate 但是当我尝试将文本字段的 delegate 字段设置为 self 时 我收到警告 从不兼容的类型 AddReviewViewController const strong 分配给
  • 找不到源码 Android?

    我在 Eclipse android 开发工具中遇到问题 Source not found EDIT SOURCE LOOKUP PATH 当我调试类 Instrumentation class 中的代码时 来自清单的 param info
  • 为ios NSString中的某些文本添加点击事件

    我有以下代码 想要使部分文本可单击并调用另一个 UIViewController 不是网站 NSMutableAttributedString str NSMutableAttributedString alloc initWithStri
  • Django 表单未呈现

    我在 forms py 中有以下形式 class ContractForm forms Form title forms CharField start date forms DateField end date forms DateFie
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • dll 中的 MFC LoadString 失败

    我在 dll 中有一个静态函数 它使用 LoadString 从资源加载字符串 当我从该 dll 调用此函数时 一切正常 但是 当我从其他模块 activeX 控件 调用此函数时 LoadString 失败并出现错误 ERROR RESOU
  • Prometheus 中的最小 scrape_interval 是多少?

    我想知道普罗米修斯的最短时间是多少scrape interval范围 根据普罗米修斯文档 https prometheus io docs prometheus latest configuration configuration 此参数的
  • 如何通过在 R 中创建额外的列(均值和标准差)来获得同一数据帧的均值和标准差结果

    如何通过在 R 中创建额外的列 平均值和标准差 来获得同一数据帧的平均值和标准差结果 DATA category sex day flag value 1 FC M 1 a 27 5 2 FC M 1 a 25 2 3 FC M 1 a 2
  • Firefox 的 getBoundingClientRect 问题

    我正在尝试使用 getBoundingClientRect 获取 contenteditable div 中光标的 y 坐标 代码的 IE 分支可以工作 但另一个分支 即用于我当前测试目的的 Firefox 3 5 则不能 下面的代码在注释