Имя: Пароль:
1C
 
1c как выполнить js функцию
0 evgenius-inc
 
26.02.16
11:03
Всем доброго дня.
Пишу на 1с обычных формах, IE версии 11.
Не могу выполнить через 1с функцию js.
Пробовал через ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow.eval("AnyFunction()") Выдает ошибку "Метод объекта не обнаружен (eval)" и ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow.AnyFunction() то же с ошибкой
Так же пробовал выполнять функцию js по нажатию кнопки в ПолеHTMLДокумента, но методы выдают ошибку:
ЭлементыФормы.ПолеHTMLДокумента.Документ.getElementById("AnyButtonID").onclick() -  либо click().
html документ когда запускаешь в браузере IE нормально отрабатывает
Есть ли какие нибудь решения/мнения по данной проблеме?
1 Garykom
 
гуру
26.02.16
11:06
нафейхуа?
2 evgenius-inc
 
26.02.16
11:08
Не понял?
3 Garykom
 
гуру
26.02.16
11:12
(2) зачем нужно?
4 Asmody
 
26.02.16
11:12
(0) зачем parentWindow?
5 evgenius-inc
 
26.02.16
11:17
(4) А как же еще?
Раньше код отрабатывал  через ПолеHTMLДокумента.document.parentWindow.MyFunc (...) или через eval(). Но не пойму что случилось и в чем проблема - код перестал работать
6 evgenius-inc
 
26.02.16
11:27
(3) Модуль на Yandex картах делаю
7 evgenius-inc
 
26.02.16
11:43
up
8 Asmody
 
26.02.16
12:04
Я делаю примерно так:
в html пишу в <body>


<script>
;document.M=(function(d,w,u){
function Main(){
this.firstMethod=function(){...};
this.secondMethod=function(){...};
};
return new Main();})(document,window);
</script>


а в 1С делаю так:

doc=ЭлементыФормы.ПолеHTMLДокумента.Документ;
doc.M.firstMethod();
9 evgenius-inc
 
26.02.16
12:41
(8) Спасибо, попробую
10 Лефмихалыч
 
26.02.16
12:54
еще есть Новый COMОбъект("MSScriptControl.ScriptControl")
11 sash-ml
 
26.02.16
13:16
нтмл невалидный
12 ramir
 
26.02.16
13:26
Элементы.HTML.Документ.parentWindow.placemark(...)

Отрабатывает хорошо. Какая ошибка возникает? В какой момент вызываешь? Не забывайте, что html, а тем более карта может отрисовываться некоторое время, а вы пытаетесь вызвать методы еще не инициированного объекта.
13 ramir
 
26.02.16
13:29
(8) Вызывать таким образом можно только методы глобального контекста (window), остальные объекты пытаются конвертится в COM объекты и не имеют методов, определенных в JavaScript.
14 portowyi
 
26.02.16
13:50
(0)
MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
    MSScriptControl.Language = "jscript";
    ДанныеEscape = MSScriptControl.Eval("var uri='" + Строка + "'; encodeURI(uri);");
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан