<html>
<body>
<script type="text/javascript">
function smth() {
if (document.getSelection) {
var str = document.getSelection();
if (window.RegExp) {
var regstr = unescape("%20%20%20%20%20");
var regexp = new RegExp(regstr, "g");
str = str.replace(regexp, "");
}
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
var str = range.text;
}
alert(str);
}
</script>
<iframe id="my" width="300" height="225">
.....some html ....
</iframe>
<a href="#" onclick="smth();">AA</a>
</body>
</html>
with smth
function i can get selected text from some div, but it doesnt work with iframe.
any ideas how to get selected text from iframe ?
Is on the outer document. To get the selection of the document in the iframe you need to grab the inner document:
Note however that WebKit does not support
document.getSelection()
ordocument.selection
. Try replacing it withwindow.getSelection()
which works in both Firefox and WebKit, but returns a selection object (a collection/wrapper around Ranges), which needs stringing:I'm not sure what the point of this is:
RegExp
is basic JavaScript dating back to the very earliest version; it will always be there, you don't have to sniff for it. The URL-encoding of multiple spaces is quite unnecessary. You don't even need RegExp as such, a string replace could be written as:This code works in all modern browsers:
You need to get the selection from the document/window in the iframe.
You can't access data inside an
iframe
that is from a domain different than yours. This is due to the Same origin policy.Following code will return the selected text.
Hope this will help to someone.