JavaScript:获取搜索文本在正文上的滚动位置
JavaScript: get scrollY position of searched text on body
我需要搜索文本的scrollY
位置。如何在正文中查找文本并获取所查找文本的scrollY
位置。
以下代码是关于问题的示例:(一切正常)
<script>
function getScrollYPosition(var str){
/* step 1: search str in <body> and found.
* step 2: get scrollY position of found str.
* step 3: return position. (500)
*/
}
</script>
<body>
<p>Hello world</p> /*For example scrollY position is 500*/
<p>...</p>
<p>...</p>
</body>
您可以首先匹配文本字符串,
将其包装成(span
)元素
然后计算元件偏移位置
以下是的一个快速示例
var word = 'dolor';
var rgx = new RegExp('''b('+word+')''b', 'ig');
// CREATE SPAN ELEMENTS WHAT WILL WRAP THE QUERY STRING (WORD)
$('div, div *').contents().filter(function() {
return this.nodeType === 3;
}).each(function() {
$(this).replaceWith($(this).text().replace(rgx, "<span class='match'>$1</span>"));
});
// COLLECT ALL SPAN POSITIONS
var positions = $('.match').map(function(){
return this.getBoundingClientRect().top;
}).get();
alert(positions);
div{font-size:50px;}
span.match{background: gold;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut voluptatum, provident saepe. Culpa animi sint, itaque iure error hic qui blanditiis perspiciatis adipisci, libero quia veritatis dignissimos quasi id cumque!</div>
<div>Magni cupiditate laudantium, corrupti commodi, reiciendis consequuntur recusandae minima tempore id placeat rerum saepe molestiae, nulla illo, dolores distinctio aliquid asperiores esse maxime voluptatibus corporis at. Commodi eius magni esse!</div>
<div>Maiores explicabo, dolor nemo mollitia cumque et nobis quae consectetur alias dicta quod facere saepe aspernatur sint ex soluta nulla veritatis ab. Sunt aspernatur distinctio quam alias quis possimus reiciendis impedit.</div>
<div>Est sequi eius nam, odio ut commodi quam omnis aperiam, vel, sunt quaerat adipisci voluptates natus possimus consequuntur corporis atque facere corrupti, rem autem modi ipsam inventore nobis! Itaque, modi?</div>
<div>Velit, cumque in dicta ratione iste autem, atque dolor magni optio, excepturi qui ipsam laboriosam modi quidem cupiditate sapiente perferendis! Iste eos fuga ut eum deserunt repellendus ex qui, illo eaque!</div>
<div>Ullam a, labore aperiam ex culpa nesciunt ipsam voluptatibus maiores consequatur qui repellendus obcaecati tenetur, consectetur eos, ut voluptate, nemo placeat soluta odit? Error, Dolor, voluptatibus! Id sed alias et consectetur.</div>
<div>Ipsa pariatur tenetur, nobis recusandae deserunt quisquam nesciunt, ex consequuntur minus voluptatem dolores officiis itaque fuga reiciendis dolor praesentium quae maxime repudiandae. Quibusdam sint fugit soluta pariatur, alias, eveniet natus culpa!</div>
您可以更具体地回答。如果我理解正确,你需要找到一个包含给定文本的元素,并获得它的垂直偏移量。您可以尝试以下操作:
$($(":contains(YOUR_TEXT)").slice(-1)[0]).offset().top
相关文章:
- 有没有一种方法可以直接从cordova获得滚动位置
- 根据滚动位置动态更改href
- 是否可以使用flexbox显示模型设置元素的滚动位置
- 浏览器持续滚动位置
- Sammy.js缓存和滚动位置时,返回历史
- PHP保持滚动位置
- 按下后退按钮时,如何保持可滚动区域的滚动位置
- 滚动位置 (scrollTop) 硬件是否在浏览器中加速
- 在 React 中创建滚动位置指标
- 关闭移动菜单后恢复滚动位置
- 检测可滚动元素内的滚动位置
- 如何在反应性呈现新帖子时保持滚动位置
- UI 路由器 - 在状态之间转换时记住滚动位置
- 单击下拉列表时保持滚动位置(javascript)
- 保留选项后的滚动位置(单击时)
- js-scrollToEl获取滚动位置
- Backbone.js路由和滚动位置
- 如何更改页眉'的底部边框颜色取决于滚动位置
- 如何精确地获得页面的最大滚动位置
- 导航栏固定底部位置,当到达滚动位置时切换到静态