Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > доступ к фреймам через Java Script


Автор: ulkoalex 17.4.2006, 12:09
Проблема следующая - необходимо управлять содержимым одного фрейма из другого.
Делаю след. образом:
Код
top.frames['frame'].document.getElementById('name').value = "Vasya Pupkin"; 

Но это работает только если оба фрейма на одном сайте.
Если же второй фрейм грузится с другого домена то скрипт выдает ошибку "отказано в доступе" или "действие отменено".
Можно ли разрешить доступ с помошью настроек (IE)?
Страничка создается для пользования "узким кругом" (в админке), поэтому проблему необходимо решить любым способом (ковырянием в винде/IE)   smile  smile 
Главное чтобы такая конструкция работала
Подскажите, если кто знает возможно-ли траблу решить вообще и как, заранее спасибо!  

Автор: 12345c 17.4.2006, 17:38
Для узкого круга легко - 

Options - Security - Custom Level - Access Data Sourses Across Domains (в разделе Miscellanious (Разное) ) 

Автор: ulkoalex 17.4.2006, 20:34
спасибо за ответ
все верно, эту опцию я уже выставил
осёл упорно пишет "в доступе отказано"... smile  

Автор: 12345c 17.4.2006, 21:01
Имеет значение, для какой группы сайтов выставлено: Local intranet или internet. 

Автор: Bangladesh 17.4.2006, 21:31
попробуй обратиться вот так:

Код

window.frameName.document.getElementById("IdName").value = "Vasya Pupkin"; 


Добавлено @ 21:36 
frameName - имя твоего фрейма. в массиве frame[i], i - integer, насколько я понял по документации... 

Автор: ulkoalex 17.4.2006, 22:20
блин, всё не работает
To12345c:
выставлено для всех групп (Local intranet или internet), ошибка не исчезает smile 
To I, GyoZ:
Цитата

 frame[i], i - integer

это не так:
Код

top.frames['frame'].document.getElementById('name').value = "Vasya Pupkin"; 

frame - это имя фрейма а не integer
а в таком случае ослик ругается, говорит  window.frameName вообще не существует или null
или я чего-то недопонял? объясните плз, очень надо smile  smile  

Автор: 12345c 17.4.2006, 23:32
Нет, локальным скриптом это не решить, если не решить вопрос доступа. А странно, я предполагал, что режим работает. Возможно, его отключили в патчах безопасности или в SP2.

Тогда гарантированно будет работать доступ через трансляцию страницы через сервер. Пишется это очень коротко на PHP (если сервер не за прокси), ищите на форуме PHP по file_get_contents() или в док. 

Автор: ulkoalex 18.4.2006, 13:27
у меня как раз и сделано через трансляцию:
Код

$handle = fopen($fname, "rb");
$contents = '';
while (!feof($handle)) {
  $contents .= fread($handle, 8192);
}
fclose($handle);

......

echo $contents;

но ведь в этом случае страница по сути лежит на моем домене где лежит скрипт (который читает и выдает ее)
и при сабмите возникают след проблемы:
1) невозможно использовать сессии (т.е. если нужна регистрация, и иногда Captcha делают через сессии)
2) некоторые хосты вообще не принимают пост/гет запросов с других доменов (в .хтаксес прописано)

неужели никак нельзя подрихтовать реестр молоточком? smile 
чтоб отключить все эти политики, или мож вин98 (ну или "3.11 для рабочих групп") поставить? smile 

А через ActiveX никак нельзя оргинизовать заполнение?
(на актив иксе дофига таких тулбаров) 

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