how to get selected text from iframe with javascript ?
+1
A:
var $ifx = $('<iframe src="filename.html" height=200 width=200></iframe>').appendTo(document.body);
$(document.body).bind('click', function(){
var u_sel;
if(window.getSelection){
u_sel = ifx[0].contentWindow.getSelection();
// u_sel.text() InternetExplorer !!
alert(u_sel);
}
});
That should do it, as long as the iframe src
is targeting your own domain
.
Tested only on FireFox 3.6.7
so far.
jAndy
2010-07-24 12:01:05
Won't work in IE.
Tim Down
2010-07-24 20:11:38
Also, the `getSelection()` method of a window object returns a `Selection` object, not a string. You need to call `toString()` on it.
Tim Down
2010-07-25 18:21:30
@Tim Down: No need to call `.toString()` since javascript already does the job for you.
jAndy
2010-07-25 18:37:14
Well yes, if you happen to be alerting it. Won't work so well if, say, you wanted to do a string substitution on it and tried to call `replace()`.
Tim Down
2010-07-25 18:40:36
A:
function getIframeSelectionText(iframe) {
var win = iframe.contentWindow;
var doc = iframe.contentDocument || win.document;
if (win.getSelection) {
return win.getSelection().toString();
} else if (doc.selection && doc.selection.createRange) {
return doc.selection.createRange().text;
}
}
var iframe = document.getElementById("your_iframe");
alert(getIframeSelectionText(iframe));
As noted by jAndy, this will only work if the iframe document is served from the same domain as the containing document.
Tim Down
2010-07-24 20:12:58