访问 iframe 中内容可编辑字段中的选定图像

发布于 2024-11-01 14:24:53 字数 311 浏览 6 评论 0原文

我在获取 src 或 id 或 iframe 内可编辑 div 容器内的选定图像的任何内容时遇到问题。好吧,可以通过 getSelection() 调用来获取选定的文本信息,如下所示:

window.document.getElementById("monitor").contentWindow.document.getSelection();
// "monitor" = iframe id

但是如果我选择图像而不是文本,我只会得到一个空结果。我搜索了几个小时但没有找到任何解决方案。有人知道如何解决这个问题吗? (我使用的是火狐4)

I have a problem to get src or id or whatever of an selected image that is inside a contenteditable div-container within an iframe. Well, it is possible to get the selected text information with a getSelection()-call like this:

window.document.getElementById("monitor").contentWindow.document.getSelection();
// "monitor" = iframe id

But if I select an image instead of text, I just got an empty result. I searched hours and hours but didn't find any solution. Does someone knows a way how to solve this problem? (I'm using Firefox 4)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残花月 2024-11-08 14:24:53

window.getSelection()(其中 document.getSelection() 是 HTML5 兼容浏览器中的别名)返回 Selection 对象,而不是字符串(它只是表面上看起来是一个字符串,因为它的 toString()方法返回选定的文本)。最有用的方面是能够获取一个或多个 DOM Range 对象。

一旦你有了一个 Range,获取它包含的所有 DOM 节点就有点棘手了。您可以使用我的 Rangy 库,它添加了一个 getNodes() 方法其 Range 的实现:

var sel = rangy.getSelection();
if (sel.rangeCount) {
    var range = sel.getRangeAt(0);
    var elements = range.getNodes([1]);
    for (var i = 0; i < elements.length; ++i) {
        alert("Selected element: " + elements[i].tagName);
    }
}

window.getSelection() (for which document.getSelection() is an alias in HTML5-compliant browsers) returns a Selection object, not a string (it only superficially appears to be a string because its toString() method returns the selected text). The most useful aspect for this is the ability to get one or more DOM Range objects representing the selection using getRangeAt().

Once you have a Range, getting all the DOM nodes it contains is a little tricky. You could use my Rangy library, which adds a getNodes() method to its implementation of Range:

var sel = rangy.getSelection();
if (sel.rangeCount) {
    var range = sel.getRangeAt(0);
    var elements = range.getNodes([1]);
    for (var i = 0; i < elements.length; ++i) {
        alert("Selected element: " + elements[i].tagName);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文