栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过javascript检测浏览器换行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过javascript检测浏览器换行

首先我必须承认,我认为这将是一项艰巨的任务,因为无法通过任务浏览器告诉您自动换行符发生在何处。

我创建了一个解决方案,首先将每个单词包装在一个范围内,然后遍历所有范围以确定它们在容器中的最高位置。然后,它构建一个行起始和结束跨度的索引数组,并将单词跨度的每一行都包装在一个环绕跨度中。

可能的局限性:

  • 在每个跨度末尾添加的空格可能会导致跨度中断到可能不会出现文本的新行。
  • 不知道换行后是否需要删除每个单词跨度。(非常简单的mod)
  • 假设容器中除文本外没有其他html
  • 如果多个容器需要将一些额外的工作变成一个插件
  • 单词的正则表达式在空间上很简单。可能需要其他正则表达式来重复使用空格

HTML:

<div id="content">Lorem Ipsum<div>

CSS:

#content{ position:relative}

JS:

var $cont = $('#content')var text_arr = $cont.text().split(' ');for (i = 0; i < text_arr.length; i++) {    text_arr[i] = '<span>' + text_arr[i] + ' </span>';}$cont.html(text_arr.join(''));$wordSpans = $cont.find('span');var lineArray = [],    lineIndex = 0,    lineStart = true,    lineEnd = false$wordSpans.each(function(idx) {    var pos = $(this).position();    var top = pos.top;    if (lineStart) {        lineArray[lineIndex] = [idx];        lineStart = false;    } else {        var $next = $(this).next();        if ($next.length) { if ($next.position().top > top) {     lineArray[lineIndex].push(idx);     lineIndex++;     lineStart = true }        } else { lineArray[lineIndex].push(idx);        }    }});for (i = 0; i < lineArray.length; i++) {var start = lineArray[i][0],    end = lineArray[i][1] + 1;if (!end) {    $wordSpans.eq(start).wrap('<span >')} else {    $wordSpans.slice(start, end).wrapAll('<span >');}

}



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号