Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];

Вниз

JavaScript+IHTMLWindows2   Найти похожие ветки 

 
Igor2010   (2009-04-28 20:35) [0]

Привет всем!

Запускаю функцию JavaScript в документе по связке указанной в теме execScript - ом. execScript в свою очередь возвращает 0 либо "" т.е. ничего.
Какой связкой, функцией, методом или др чем нить в Delphi можно воспользоваться чтобы происходил запуск функции javascript и возврат вызываемой javasript-функции был в возврате функции Delphi?


 
sniknik ©   (2009-04-29 13:43) [1]

просто вызывай функцию через объект, типа WebBrouser1.чтото.ФункцияJavaScript(); не помню точно где глобальные функции/переменные находятся, надо структуру DOM-а посмотреть... может у документа у окна.


 
Igor2010   (2009-04-29 19:04) [2]


> WebBrouser1.чтото.ФункцияJavaScript();


не понял, а как структуру DOM-а посмотреть?


 
sniknik ©   (2009-04-29 19:17) [3]

легко находится в гугле... к примеру
http://proklondike.com/contentview.php?content=400


 
Igor2010   (2009-04-29 19:49) [4]


> http://proklondike.com/contentview.php?content=400

а что скрипты являются объектами документа? думаю нет...


 
sniknik ©   (2009-04-29 21:14) [5]

> думаю нет...
не думай, у меня получалось, но вот от документа или другого объекта не помню (скорее всего окна)


 
Igor2010   (2009-04-29 21:18) [6]


> не думай, у меня получалось, но вот от документа или другого
> объекта не помню (скорее всего окна)


Понятно...спасибо Вам, что откликнулись и подсказали. Если никто больше не подскажет, то дальше буду применять метод великого научного тыка ;-).


 
sniknik ©   (2009-04-29 21:31) [7]

во блин... 2 раза ему проверить лень... вариантов то не особо много, и это явно не у ссылки, истории, фрейма (ну вот у этого может быть но не глабальные).

гарантирую, никто больше не подскажет, пробуй уже.


 
Igor2010   (2009-04-29 22:13) [8]


> пробуй уже.
>


не получается :(


 
sniknik ©   (2009-04-30 00:13) [9]

значит не судьба.


 
Германн ©   (2009-04-30 01:01) [10]


> Igor2010   (29.04.09 22:13) [8]
>
>
> > пробуй уже.
> >
>
>
> не получается :(

После [7] твой ответ [8] может привести только к [9].
Ну ещё и к переносу из "Основной" в "Начинающим". Ибо такой ответ без приведения кода "своей" попытки, как правило означает, что и не пробовал.


 
Igor2010   (2009-04-30 10:28) [11]

WebBrouser1.чтото.ФункцияJavaScript();

чтото = document, OleDocument, OleDocument.Window и т.д.

или по другому (не через ИДиспатч)

doc:= webbrowser1.document as ihtmldocument2;
win:=doc.parentWindow;
win.чо ток не пробывал......ФункцияJavaScript();


 
sniknik ©   (2009-04-30 10:56) [12]

win.ФункцияJavaScript();


 
Igor2010   (2009-04-30 13:49) [13]


> win.ФункцияJavaScript();


вот функция javascript в документе
function getNewNamesErrorCallback()
{
   getNewNamesCallback(108);
}

вот пытаюсь воспользоватся в delphi
win.getNewNamesErrorCallback();-ошибка будет функция то не описана


 
sniknik ©   (2009-04-30 14:05) [14]

> вот функция javascript в документе
это не функция, а черте что, даже результат не возвращает...
и потом где она описана? обращаться можно только к глобальным (к тому к чему объекту есть доступ, доберешься до например формы в боди, то может и оттуда сможешь)

> -ошибка будет функция то не описана
будет? т.е как это  будет, ты так и не пробовал, иначе бы написал есть, и почему.

p.s. точно не судьба.


 
TStas ©   (2009-05-01 01:04) [15]

Я вот тоже из Дельфей функцию скриптовую вызывал. С возвратом значения не помню, что, но параметры в лоб не вышло передавать. Но точно можно передавать и получать параметры через глобальные переменные, чтобы функция их изменяла.

 ie:=CreateOleObject("InternetExplorer.Application");
 ie.Navigate(oldPrgramkaPath);

 doc:=ie.Document;
 doc.Script.outerN:=Form1.N; //Передаю в скритп переменные
 doc.Script.outerP:=Form1.P;
 doc.Script.outerS:=Form1.S;

outerN, outerP, outerS - Это переменные скрипта
doc.Script.ecceptOuterVars //И вызываю функцию подстановки
Sleep(TuneForm.SpinEdit3.Value); //По-хорошему дожидаться никак не хочет
takenStr:=doc.Script.DataOut; //И забираю из веб-странички результат

А по-хоршоему, чтобы вызвать из веб-странички функция, передав ей, как человеку, параметры и забрав результат, никак не получалось. Но всё работает через глобальные переменные.


 
sniknik ©   (2009-05-01 01:24) [16]

> Но точно можно передавать и получать параметры
прямо вызывая функцию у объекта.

> Но всё работает через глобальные переменные.
а чем переменная от функции отличается? раз уж "забрался в кормушку" то какая разница яблоки из нее брать или груши?


 
Igor2010   (2009-05-01 09:19) [17]

Вообще в данной теме мне нужно было получить текст который выводится в id="checkUser"  "глубоко" так сказать в документе посредством в яваскрипт функции document.getElementById("checkUser").innerHTML = txt;
Пробовал разными способами:

1. способом возврата типа WebBrouser1.чтото.ФункцияJavaScript() не получилось     :( хотел как exeScript только с возвратом;

2. пробовал через GetIDsOfNames но работать с ней не умею и гугл не помог :(

3. Обошел проблему так:
          doc:= webbrowser1.document as ihtmldocument2;
          win:=doc.parentWindow;
          S:=win.document.body.innerHTML;
           дальше парсим S как надо

Всем спасибо, но люди добрые, способы 1 и 2 есчо актуальны ;-)


 
sniknik ©   (2009-05-01 10:59) [18]

> 1. способом возврата типа WebBrouser1.чтото.ФункцияJavaScript() не получилось
ну, что такое "чтото" мы уже тут "навспоминали". это
WebBrouser1.document.parentWindow.ФункцияJavaScript()

> способы 1 и 2 есчо актуальны ;-)
и похоже останутся актуальны, пока не научишься говорить конкретно, без партизанщины. (хотя по второму вообще не понимаю чего ты туда полез, совсем не обязательно разбирать интерфейс "по косточкам" чтобы просто функцию вызвать)


 
Igor2010   (2009-05-04 18:17) [19]


> WebBrouser1.document.parentWindow.ФункцияJavaScript()


так вернее:
WebBrowser1.OleObject.Document.parentWindow.ФункцияJavaScript();


> хотя по второму вообще не понимаю чего ты туда полез, совсем
> не обязательно разбирать интерфейс "по косточкам" чтобы
> просто функцию вызвать


мне интересен этот способ, для самообразования как бы ;-), нет примерчика полноценного?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
2-1263806738
Alex_h
2010-01-18 12:25
2010.03.21
Отчет Rave. Как разместить TDataMemo?


15-1262278818
qaz
2009-12-31 20:00
2010.03.21
Новогодняя


3-1236755543
Михаил
2009-03-11 10:12
2010.03.21
Немогу открыть файл mdb в запросе AdoQuery


2-1263492244
lewka
2010-01-14 21:04
2010.03.21
Обращение к ТStringGrid на другой TForm


2-1263756018
Jimmy
2010-01-17 22:20
2010.03.21
Замена цветов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский