Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 26.06.2018, 10:07   #1
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 1,875
Репутация: 513

icq: 359393755
По умолчанию Доступ к элементу iFrame

Здравствуйте.

Возникла проблемка следующего вида.

Есть страница сайта который запускается локально через awesomium. На странице несколько фреймов и внутри одного из них есть поле поиска в которое из приложения программно нужно вставлять некоторый текст и нажимать кнопку поиск.

пытаюсь достать его через скрипт:

Код:

dynamic iframe = (JSObject)webControl1.ExecuteJavascriptWithResult("document.getElementById('mainFrame')");            
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
var ulObj = innerDoc.getElementById("text-to-find");

Сам фрейм находит но дальше ничего. Почитал что там из за различных доменов доступа нету. Так вот че сделать то нужно чтобы вставить текст в input и нажать кнопку рядом??
Или может надо какую нибудь функцию вписать в текст страницы чтобы ее можно было вызвать с параметрами и она на странице все сама сделала??
Спасибо.
__________________
ICQ - 359393755 E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Старый 26.06.2018, 12:14   #2
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 203
Репутация: 44
По умолчанию

Вы правы. В данном случае работает "Принцип одинакового источника"(Same Origin Policy). Одинаковые источники — это источники, у которых совпадают три признака:

- домен;
- порт;
- протокол.

Обойти данную проблему возможно только, если вы являетесь владельцем обоих ресурсов. Вы можете через iframe вызвать событие на стороннем источнике(сайте). Для воспользуйтесь методом postMessage().

Ну и, естественно, это событие ваш "сторонний источник" должен ожидать.
Baburek вне форума   Ответить с цитированием
Старый 26.06.2018, 12:33   #3
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 1,875
Репутация: 513

icq: 359393755
По умолчанию

А пример можно?

Скрипт вставлял в страницу фрейма
Код:

 function myMethodProvidingReturn(whatToReturn) {
        var returnVal =  whatToReturn + " bar";
		document.getElementById('text-to-find').value = 'some value';
        return ok;
    }

Но все равно не видит этой функции. Как только не пытался вызвать.



-------------------------

Разобрался ...
в скрипты страницы фрейма вставил
Код:

function receiveMessage(event)
{
  var input = window.document.getElementById("text-to-find");
  input.value = event.data;
}
window.addEventListener("message", receiveMessage, false);

и из кода вызываю :

Код:

string test = "452 строка";
dynamic ifr = webControl1.ExecuteJavascriptWithResult("document.getElementById('mainFrame').contentWindow.postMessage('"+test+"', '*')");

__________________
ICQ - 359393755 E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы

Последний раз редактировалось WorldMaster; 26.06.2018 в 12:49.
WorldMaster вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить доступ к элементу Label shvedoff C# (си шарп) 1 22.04.2017 11:06
Доступ к элементу Select НастяНастя Помощь студентам 1 20.05.2014 20:20
Доступ к элементу. updaite C# (си шарп) 2 14.11.2013 15:19
ObservableCollection Доступ к элементу класса eugene771 C# (си шарп) 0 27.10.2012 17:15
Доступ к элементу управления EdNovice Microsoft Office Excel 1 19.01.2011 12:38


04:09.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru