getSelection中没有alt属性和脚本
getSelection without alt attribute and scripts in it?
我使用的是window。getSelection()获取所选文本。但是,如果我也选择了一个图像,它也会返回一个图像。
的例子:
<img src="someSrc.jpg" alt="image_alt" /> My text here ...
如果我也选择一个图像,它返回
我的文字在这里
但我只需要
My text here .
有没有办法只得到文本,没有alt?
谢谢
试试这个:
window.getTextSelection = function() {
//First get HTML Fragment of selection
var html = window.getSelection().getRangeAt(0).cloneContents();
//Return only the text
return html.textContent||html.innerText;
}
在某些情况下,你可以简单地通过CSS禁用用户选择:希望您也可以通过禁用图像的用户选择来实现这一点:
img {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
最简单的方法是使用toString()
方法来选择范围(s),这是在WHATWG的新范围规范的当前版本中指定window.getSelection().toString()
要做的(尽管这与某些浏览器所做的相反,可能会或可能不会改变)。下面的代码将适用于多个选择范围(Mozilla支持),也适用于IE <9 .
jsFiddle: http://jsfiddle.net/timdown/HkP2S/
代码:function getSelectionRangeText() {
var selText = "";
if (window.getSelection) {
var sel = window.getSelection(), rangeCount = sel.rangeCount;
if (rangeCount) {
for (var i = 0, rangeTexts = []; i < rangeCount; ++i) {
rangeTexts.push("" + sel.getRangeAt(i));
}
selText = rangeTexts.join("");
}
} else if (document.selection && document.selection.type == "Text") {
selText = document.selection.createRange().text;
}
return selText;
}
此解决方案包括<script>
和<style>
元素内的文本。为了消除这种情况,可以在选择范围上使用cloneContents()
并遍历结果文档片段的DOM,仅从不包含在<script>
和<style>
元素中的文本节点收集文本。您还可以在此基础上扩展以删除CSS display: none
元素内的文本。
jsFiddle: http://jsfiddle.net/timdown/HkP2S/2/
代码:function getSelectionRangeText() {
var selText = "", selTextParts = [];
function getNodeText(node) {
if (node.nodeType == 3) {
selTextParts.push(node.data);
} else if (node.hasChildNodes()
&& !(node.nodeType == 1 && /^(script|style)$/i.test(node.tagName))) {
for (var child = node.firstChild; !!child; child = child.nextSibling) {
getNodeText(child);
}
}
}
if (window.getSelection) {
var sel = window.getSelection(), rangeCount = sel.rangeCount;
if (rangeCount) {
for (var i = 0; i < rangeCount; ++i) {
getNodeText(sel.getRangeAt(i).cloneContents());
}
selText = selTextParts.join("");
}
} else if (document.selection && document.selection.type == "Text") {
selText = document.selection.createRange().text;
}
return selText;
}
相关文章:
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 从脚本标记访问手柄属性
- 如何使用java脚本或jQuery基于相同的特定css属性对元素进行分组
- Google 表格脚本 - “无法读取未定义的属性”(如果不是)
- 获取 无法读取未定义的引导轮播脚本的属性“偏移宽度”
- Java 脚本 设置日期的最小值和最大值属性
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- 获取脚本中CSS颜色属性的实际值
- 从Input Javascript在脚本中添加属性
- 脚本标记中的全局变量使用's源属性
- Symfony Twig+Haml标记属性检查和属性脚本
- 脚本点击Css显示属性更改不正常运行Asp.net
- 如何像java脚本中给定的对象一样,将对象的属性保持在相同的顺序
- HTML<脚本>Magento中的async属性
- 从另一个Javascript脚本(Canvas3D)更新QML属性
- java脚本错误对象没有'不支持此属性或方法
- 使用script元素上的html data-*属性来配置引用的脚本文件
- javascript<脚本异步属性>
- 使用jQuery获取链接的属性,并将其作为表单发布到另一个脚本文件
- 用于生成具有随机颜色的 CSS 属性的脚本