【发布时间】:2011-12-10 02:05:09
【问题描述】:
我有一个场景,其中在一个网页中打开了多个 iframe/框架。现在用户可以在任何一个打开的框架/iframe 中选择一些文本。我想确定用户选择文本的 iframe 的 ID/名称,然后使用 iframe id/名称对所选文本进行一些操作。
我该怎么做?
【问题讨论】:
标签: javascript iframe frame
我有一个场景,其中在一个网页中打开了多个 iframe/框架。现在用户可以在任何一个打开的框架/iframe 中选择一些文本。我想确定用户选择文本的 iframe 的 ID/名称,然后使用 iframe id/名称对所选文本进行一些操作。
我该怎么做?
【问题讨论】:
标签: javascript iframe frame
这将获得当前文档中具有非空选择的第一个 iframe。如果 iframe 来自另一个域,因此在当前文档中运行的 JavaScript 无法访问,则无法检索所选内容并忽略 iframe。
function getSelectedText(win) {
var sel;
if (win.getSelection) {
return "" + win.getSelection();
} else if ( (sel = win.document.selection) ) {
if (sel.type == "Text") {
return sel.createRange().text;
}
}
return "";
}
function getIframeWithSelection(win) {
var iframes = win.document.getElementsByTagName("iframe");
for (var i = 0, len = iframes.length, selectedText; i < len; ++i) {
try {
selectedText = getSelectedText(iframes[i].contentWindow);
if (selectedText != "") {
// alert just there for debugging
alert(selectedText);
return iframes[i];
}
} catch (e) {}
}
return null;
}
// Example
var iframe = getIframeWithSelection(window);
【讨论】: