Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вопрос по многофреймовой структуре (https://javascript.ru/forum/events/66004-vopros-po-mnogofrejjmovojj-strukture.html)

tasya53 20.11.2016 16:42

Вопрос по многофреймовой структуре
 
Только начал разбираться в асинихронном JavaScript
Есть многофреймовый документ main.html

<HTML><HEAD><meta http-equiv='Content-Type' content='text/html;'>
</HEAD>
<frameset rows="80%,20%" frameborder="0">
<frame name="displayFrame" src="display.html" noresize="noresize" />
<frame name="hiddenFrame" src="about:blank" noresize="noresize" />
</frameset>
</HTML>
Невидимый фрейм hiddenFrame предназначен для асинхронного доступа к любому ресурсу (в примере вконтакте) через свойство location

Вот документ display.html

<HTML><HEAD><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'></HEAD>
<BODY>
<SCRIPT>
function requestCustomerInfo(fun)
{
var sid = document.getElementById('txtCustomerId').value;
var src = "https://api.vk.com/method/users.get?user_id="+sid+"&v=5.52";
alert(src+"-"+fun);
top.frames["hiddenFrame"].onload=fun;
top.frames["hiddenFrame"].location=src;
//alert(top.frames["hiddenFrame"].document.body.innerHTML);
alert(top.frames["hiddenFrame"].nodeValue);
return;
}

function GetCustomerName()
{
alert("OOOOOO");
return;
}
</SCRIPT>
Чтобы получить информацию о клиенте, введите его идентификационный номер:<BR>
Идентификационный номер: <input type="text" id="txtCustomerId" value=""><BR>
<input type="button" value="3апросить информацию о клиенте" onclick="requestCustomerInfo('GetCustomerName()')" >
<div id="divCustomerInfo"></div>
</BODY>
</HTML>

ВОПРОС!
1. КАК получить доступ к содержимому фрейма hiddenFrame где лежат данные о пользователе
2. КАК отловить событие onload фрейма hiddenFrame, когда эти данные уже пришли во фрейм.
Понимаю, что вопросы тупейшие и простейшие, но никак не могу разобраться
ЗАРАНЕЕ БЛАГОДАРЕН

Rise 20.11.2016 17:27

tasya53, отформатируй код

tasya53 20.11.2016 17:39

Господи, неужели никто не поможет!
КАК ПОСТРОИТЬ ССЫЛКУ НА ВСЕ СОДЕРЖИМОЕ СТРАНИЦЫ (https://api.vk.com/method/users.get?...5472603&v=5.52), ЗАГРУЖЕННОЙ ВО ФРЕЙМ (там всего одна строка).....
top.frames["hiddenFrame"].document.childNodes[0].innerHTML не дает содержимого - только пустые теги

Rise 20.11.2016 17:47

tasya53, и не так просто получить данные о пользователе:
- во-первых политика безопасности не даст доступа к фрейму с другого домена
- во-вторых в вк надо регистрировать приложение и по нему получать согласие пользователя для доступа к его данным (по крайней мере раньше так было не думаю что что-то сильно поменялось)

Не всё так просто в этой жизни мой друг Горацио.

tasya53 20.11.2016 17:55

Попробуйте что ли для начала

НЕ ТРЕБУЕТСЯ НИКАКАЯ РЕГИСТРАЦИЯ! - эта операция не требует авторизации
СОДЕРЖИМОЕ ДОКУМЕНТА У МЕНЯ ОТОБРАЖАЕТСЯ ВО ФРЕЙМЕ
КАК ПОЛУЧИТЬ ССЫЛКУ НА СОДЕРЖИМОЕ ЭТОГО ДОКУМЕНТА?

tasya53 20.11.2016 18:05

Rise,
В чем-то Вы наверное правы - загрузил локальный документ во фрейм и через top.frames["hiddenFrame"].document.firstChild.outerHTML получил его содержимое.
А вот для вконтакте только вижу пустоту, хотя текст ответа во фрейме присутствует
С чем это может быть связано?

Rise 20.11.2016 18:08

tasya53, так устроены браузеры.

tasya53 20.11.2016 19:44

Rise,
Если Вы понимаете в чем причина, подскажите, как всетаки вытянуть содержимое из фрейма - оно там есть, но в структуре документа пусто. Ведь откуда то строка ответа на экране берется
Буду очень Вам признателен

Rise 20.11.2016 19:58

tasya53, никак.

tasya53 20.11.2016 20:05

На вскидку clipboarddata или переместить мышь, скопировать, вставить куда нужно, но я с этими методами никогда не работал

Rise 20.11.2016 20:56

tasya53, поработай может поумнеешь, не все телодвижения можно повторить программно, браузер дает человеку больше привилегий чем скрипту, не знаю дано ли тебе это понять.

Deff 21.11.2016 00:24

Ну в принципе, если низзя, но оч хочется, то можно...
Интересны аргументы, а зачем это всё ? И насколько автору интересно...


Часовой пояс GMT +3, время: 16:32.