Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > getSelection() из другого frame


Автор: wtbh 9.8.2010, 11:48
Добрый день всем!
Как получить значение выделенного текста нашел:
Код

 function getSelText(){
        var txt = '';
        if (window.getSelection){                      
                txt = window.getSelection();
        }else if (document.getSelection){
                txt = document.getSelection();
        }else if (document.selection){
                txt = document.selection.createRange().text;
        }
        alert(txt);
 }

 но так как я  с javascript не имел дел может кто нибудь подскажет как из одного фрейма получить выделенную строку другого фрейма.
Спасибо!

Автор: ZneP 9.8.2010, 13:13
Допустим у тебя окно разбито на 2 фрейма, левый и правый
frames[0] - это левый фрейм
frames[1] - это правый

В правом выделен текст, а из левого тебе нужно получить выделение

Код

function getSelText(){
        var txt = '';
// Если в правом фрейме есть выделение
var right_frame = window.parent.frames[1];
        if (right_frame.getSelection){                      
                txt = right_frame.getSelection();
        }
        else if (right_frame.document.getSelection)
                txt = right_frame.document.getSelection();
        else
                txt = right_frame.document.selection.createRange().text;
        alert(txt);
 }

P.S. Это с учетом того, что эта функция будет в одном из фреймов

Автор: wtbh 9.8.2010, 14:10
спс. работает. 
только вот скажите если в правый frame я вставляю что нибудь типа  http://aport.ru <frame src="http://aport.ru" name="centr">  или какие нибудь странички где используются javascript то тогда ничего не работает. Такое реально победить?

Автор: ZneP 9.8.2010, 15:02
Без разницы что у тебя в правом фрейме будет открыто. Должно и так работать. 
Функция получения выделения должна быть в левом фрейме

Автор: Amphiluke 9.8.2010, 15:33
Цитата(ZneP @  9.8.2010,  19:02 Найти цитируемый пост)
Без разницы что у тебя в правом фрейме будет открыто. Должно и так работать. 

Ну-ну. Похоронили политику одного источника.

Впрочем, если ТС является обладателем aport.ru, то пожалуй. smile 

Автор: wtbh 9.8.2010, 16:04
Вот 3 файла так всё работает. но если поменять     <frame src="right.html" name="right">  на    <frame src="http://zyxel.ru" name="right">   или что еще, то не работает. Ткните плизз на ошибку
index.html
Код

<html>
 <frameset cols="100,*" rows="*">
   <frame src="left.html" name="left">
   <frame src="right.html" name="right">  
 </frameset>
</html>


right.html
Код

aaaaaaaaa
sssssssss


left.html
Код

<script type="text/javascript" language="JavaScript1.2" src="func.js"></script>
TEST
<input type=submit value=start OnClick="getSelText();">


func.js
Код

 function getSelText(){
        var txt = '';
        if (window.getSelection){                      
                txt = parent.frames['right'].window.getSelection(); 
        }else if (document.getSelection){
                txt = document.getSelection();
        }else if (document.selection){
                txt = document.selection.createRange().text;
        }
        alert(txt );
 }


Автор: mxt 9.8.2010, 16:56
ты не можешь работать с внутренностями фреймя, если страница с другого домена и тп. 

Автор: wtbh 9.8.2010, 17:11
спс большое 
буду думать как это обойти

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)