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 问题 的相关文章

  • 循环选项在 youtube js api 中不起作用

    我想知道为什么我的代码不循环播放视频 除了循环选项之外 一切正常 我真的需要它 多谢 div You need Flash player 8 and JavaScript enabled to view this video div
  • Vue.js + Element UI:在更改时获取“event.target”

    我无法获取在事件处理程序中触发事件的 html 字段 在 javascript 中是event target 我有一个表格 附加到更改事件函数的输入元素 管理更改事件的函数 我的代码如下 var Main methods change pa
  • 为什么我会收到此 Javascript 错误“连接未定义”?

    我不确定为什么会收到此错误 connection is not defined document getElementById flashTest sendValFromHtml connection value 这是我的代码 functi
  • 使用referrer javascript从google获取查询参数

    是否可以从google搜索中获取查询参数 IE 如果有人用谷歌搜索自行车 网址就会变成 https www google es search q bicycles 如果您随后进入搜索结果并且有人点击您的页面 您将无法看到带有 documen
  • 如何根据D3中的数据创建元素?

    看着sample https github com mbostock d3 wiki Selections wiki data d3 select body selectAll div data 4 8 15 16 23 42 enter
  • 将相同的多个对象推送到多个数组中

    这是后续使3个数组相互对应 第一个是对象名称 https stackoverflow com questions 57564488 make 3 arrays correspond to each other with the first
  • Chart.js 渲染垂直堆积条形图太慢

    我正在使用 Chart js API 渲染多个堆叠的垂直条形图 但性能很慢 我什至做了一些改变 这样所有的content对象已经由服务器而不是浏览器处理 但我意识到大部分时间来自最终函数new Chart overallStatsChart
  • 从字符串中提取电子邮件地址

    我有一个像这样的字符串 Francesco Renga lt email protected cdn cgi l email protection gt 我只需要提取电子邮件 即 电子邮件受保护 cdn cgi l email protec
  • 如何在 Ionic 2 中动态创建具有特定类的模式?

    嗨 我已经被一个问题困扰好几天了 到目前为止还没有研究证明足够 我正在尝试在 Ionic 2 中创建一个具有特定类 或 id 的简单模式 我需要这样简单的东西
  • 检测 JavaScript 版本

    如何检测浏览器支持的 JavaScript 版本 如果有 我想检查 ECMAScript 3 ECMAScript 5 和 ECMAScript 6 注意 我想避免已弃用的language tag 这里有一个很好的参考给你 http www
  • 在 angularJS 中覆盖模块值/常量的最佳方法

    我用 angularJS 编写了一个模块 封装了所有后端通信 为了获得更大的灵活性 我将 api 前缀作为模块上的常量值 可能是值 因为我没有在配置阶段使用它 所以像 angular module myapp data constant a
  • 如何向 Firefox 添加自定义网络限制?

    这是 stackoverflow 的主题 因为它与开发工具有关 我想要做的是将卫星互联网配置文件加载到 F12 网络节流 比如 500ms 延迟和 25Mbit 的最大带宽 由于广泛使用require js 根据我对 Firefox 代码的
  • 如何验证单选按钮?

    我的 Rails 应用程序中有一个单选按钮 我想编写一个 java 脚本代码 在未选择任何选项时验证这一点 在你的 votes 类中做类似的事情 class Myvotes lt ActiveRecord Base validates vo
  • 如何使用谷歌地图检测一个点是否在多边形内部?

    我想检测到google maps LatLng是在一个里面google maps Polygon 我怎样才能做到这一点 Cheers 你可以使用这个谷歌地图V3 google maps geometry poly containsLocat
  • React:未捕获的引用错误:未定义需求

    我正在阅读 React 教程 http facebook github io react docs animation html http facebook github io react docs animation html 并且我无法
  • React-Router v5 History.push 不触发组件

    很抱歉朋友们又问这个问题了 我找到了解决这个问题的几个方法 但他们让我很困惑 我只是想问一个优雅的方法来做到这一点 正如你通过标题所理解的 我有一个关于反应路由的问题 让我解释 我有一个按钮 其名称是Login 单击按钮后 我执行了一些逻辑
  • 如何在没有查询参数的情况下重新加载页面?

    假设我想重新加载www domain com abc num 4 但我想重新加载www domain com abcONLY 问号后没有所有内容 window location window location href split 0
  • js中将div旋转到一定高度

    How to rotate a div to certain height suppose 10px I can rotate a div otherwise around 360 degrees I need the angle by w
  • javascript捕获文本区域中的粘贴事件

    我目前有一个文本区域 我需要控制已粘贴的文本 本质上 我需要能够将用户想要粘贴到文本区域中的任何内容并将其放入变量中 然后我将计算出他们粘贴文本的位置和字符串的大小 以将其从文本区域中删除 然后最后用我自己的方式处理变量中的文本 我的问题
  • 插入四个空格而不是制表符

    我试图在按下 Tab 键时插入四个空格 我正在使用以下代码 请参阅spaces t 但是当我将其切换到spaces 当我按 Tab 时只插入一个空格 我还尝试了 function textarea keydown function e va

随机推荐

  • 在 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 则不能 下面的代码在注释