Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得全部<;img>;文本选择中的标记?_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 如何获得全部<;img>;文本选择中的标记?

Javascript 如何获得全部<;img>;文本选择中的标记?,javascript,jquery,dom,Javascript,Jquery,Dom,我已经四处寻找了一段时间,但似乎没有一个简单的方法来做到这一点。jQuery至少没有帮助,它似乎完全不支持选择或DOM范围。我希望像$一样简单。selection.filter('img')似乎只有在几十行代码中处理手动枚举范围和中的元素时才可行(尽管这里有帮助)。还有其他捷径吗 var fragment = getSelection().getRangeAt(0).extractContents(); 选择中的节点将被删除并以DocumentFragment的形式返回,您现在可以像访问任何元

我已经四处寻找了一段时间,但似乎没有一个简单的方法来做到这一点。jQuery至少没有帮助,它似乎完全不支持选择或DOM范围。我希望像
$一样简单。selection.filter('img')
似乎只有在几十行代码中处理手动枚举范围和中的元素时才可行(尽管这里有帮助)。还有其他捷径吗

var fragment = getSelection().getRangeAt(0).extractContents();
选择中的节点将被删除并以
DocumentFragment
的形式返回,您现在可以像访问任何元素一样访问
fragment
childNodes

它似乎完全不支持选择或DOM范围

是的,原因是IE缺乏对选择和DOM范围的支持。您可以在IE的非标准“TextRange”对象上构建一个抽象层,但由于TextRanges暴露的极差的接口,它非常困难、缓慢和复杂,本身就是一个完整的库。见例

不幸的是,您将不得不使用前面提到的iRange库来支持IE 6/7/8


值得注意的是:

这闻起来像是每个浏览器都必须解决的问题……您需要如何处理标签?修改它们?还是只读?如果只是阅读,在innerHTML上进行regexp搜索应该可以。OP在问题中提到了IERange。嗯,奇怪。。。我可以发誓那以前是不存在的!简单地说,这是不是意味着令人惊讶?IE是否支持任何现代技术?喂,XHTML?有人在吗?;)IE9支持XHTML!所以我们可以在十年内使用它。呜呼!有几点:首先,您遗漏了
cloneContents()
中的括号。其次,变量名有误导性,因为生成的对象是
DocumentFragment
,而不是范围。第三,此片段中的任何图像都是在原始范围内找到的图像的克隆,因此不太可能有用。第四,这在IE中不起作用。@Tim Down,对不起,有点晚了;)。关于第1点、第2点和第3点,我已经解决了您提到的问题(非常感谢)。第四,根据IE受众(公司内部)的重要性,我可以说“do IE hax”或“So?”如下所述,extractContents会修改文档,这不是一个理想的副作用。最后我使用了:
vard=document.createElement(“div”);d、 appendChild(window.getSelection().getRangeAt(0.cloneContents());var img=$(“img”,d)。因为我不需要修改元素,所以我也可以使用bortao的Regexp建议。似乎不起作用。结果对象的大小()始终为零。此外,extractContents修改文档(它将一个范围的内容移动到DocumentFragment中)。
$("img", window.getSelection().getRangeAt(0).extractContents());