Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2018, 09:07   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию Доступ к элементу 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 и нажать кнопку рядом??
Или может надо какую нибудь функцию вписать в текст страницы чтобы ее можно было вызвать с параметрами и она на странице все сама сделала??
Спасибо.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 26.06.2018, 11:14   #2
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

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

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

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

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

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

Скрипт вставлял в страницу фрейма
Код:
 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+"', '*')");
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить доступ к элементу Label shvedoff C# (си шарп) 1 22.04.2017 10: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 11:38