|
JS в 1С | ☑ | ||
---|---|---|---|---|
0
golem14
25.07.18
✎
08:13
|
Платформа 8.3.13.1198.
Объект.HTML = " |<!DOCTYPE HTML> |<html> | |<head> | <!-- Тег meta для указания кодировки --> | <meta charset=""utf-8""> |</head> | |<body> | | <p>Начало документа...</p> | <script> | document.write('qwerty'); | </script> | | <p>...Конец документа</p> | |</body> | |</html>"; javascript срабатывает два раза, т.е. в поле появляется qwerty qwerty. Почему и что с этим делать? |
|||
1
Ненавижу 1С
гуру
25.07.18
✎
08:15
|
фиг знает как ты это запуускаешь
|
|||
2
golem14
25.07.18
✎
08:16
|
(1) в Поле HTML документа
|
|||
3
Малыш Джон
25.07.18
✎
08:28
|
(2) тебе мягко намекают, что самого скрипта недостаточно, чтобы понять где ошибка.
ты на какое-то действие выполнение скрипта вешаешь? |
|||
4
golem14
25.07.18
✎
08:31
|
(3) я пробовал ПриСозданииНаСервере, ПриОткрытии, просто на кнопку повесить. Во всех случаях javascript срабатывает два раза.
уже обсуждалось v8: v8: javascript в поле html-документа срабатывает 2 раза но решения там нет |
|||
5
sitex
naïve
25.07.18
✎
08:32
|
(0) не совсем понял зачем скрипт в тело сувать?
|
|||
6
golem14
25.07.18
✎
08:37
|
(5) А куда? оно так работает. вот простой пример HelloWorld
<!DOCTYPE HTML> <html> <head> <!-- Тег meta для указания кодировки --> <meta charset="utf-8"> </head> <body> <p>Начало документа...</p> <script> alert( 'Привет, Мир!' ); </script> <p>...Конец документа</p> </body> </html> |
|||
7
sitex
naïve
25.07.18
✎
08:38
|
(0) блок <head> </head> , и от туда вызывай
|
|||
8
golem14
25.07.18
✎
08:39
|
этот пример тоже выводит "Привет, Мир!" два раза (в 1С).
|
|||
9
sitex
naïve
25.07.18
✎
08:41
|
(8) Итого что опиши подробной что ты хочешь сделать.
|
|||
10
sitex
naïve
25.07.18
✎
08:45
|
(8) <body> добавляй свои кнопки и что угодно < /body>
, в <script> создавай функции и вешай их свои кнопки , клики мыши и т.д. </script> все просто. |
|||
11
novichok79
25.07.18
✎
08:46
|
а может функцию сделать в JS и просто вызывать ее насильно...
что-то типа parentWindow.eval("HelloWorldYopta()"); |
|||
12
golem14
25.07.18
✎
08:50
|
(7) &НаКлиенте
Процедура Команда1(Команда) Объект.HTML = " |<html> |<head> | <script> | document.write('qwerty'); | </script> |</head> |<body> | |</body> |</html>"; КонецПроцедуры выводит - qwerty qwerty Объясню подробней: в пустой конфигурации создал документ, ему реквизит HTML (тип строка с неограниченной длиной). Вывел реквизит на форму, установил вид "Поле HTML документа". Добавил вышеприведенную команду. должно выводить - qwerty а выводит - qwerty qwerty , т.е. скрипт выполняется дважды. |
|||
13
golem14
25.07.18
✎
08:52
|
(11) Хотелось бы чтобы оно просто работало, но видимо так и нужно делать как вы советуете. Есть готовый простой пример?
|
|||
14
sitex
naïve
25.07.18
✎
08:53
|
(12) &НаСервере формируй свой текст html и Процедуре ПриСозданииНаСервере присваивай своему реквизиту- этого достаточно.
|
|||
15
golem14
25.07.18
✎
08:54
|
(10) в теории все просто и красиво, на практике вот оно вот так вот и работает.
|
|||
16
golem14
25.07.18
✎
08:54
|
(14) так и делаю, выводит два раза
|
|||
17
Малыш Джон
25.07.18
✎
08:55
|
(11) начиная с какой-то версии порезали eval()
|
|||
18
novichok79
25.07.18
✎
08:56
|
(17) ну тогда печалько...
|
|||
19
novichok79
25.07.18
✎
09:00
|
вот недавно как раз баловался...
<!DOCTYPE html> <html> <head> <title>Font Size Definition</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=9" /> <script> function GetFontSize1C(TextParam, FontDefinition) { var myCanvas = document.getElementById("myCanvas"); var myCanvas2D = myCanvas.getContext("2d"); myCanvas2D.font = FontDefinition; return myCanvas2D.measureText(TextParam).width; } function ExecCommand() { code = document.getElementById("ExtCommand").innerHTML; res = "" + eval(code); document.getElementById("BufferData").innerHTML = res; } </script> </head> <body> <canvas id="myCanvas" width="320" height="120" style="border:2px solid #d3d3d3;">Ваш браузер не поддерживает тэг HTML5 canvas.</canvas> <input type=button style="display:none" id="SendEvent" onclick = "ExecCommand()" /> <div id="ExtCommand" style="display:none">extcommand</div> <div id="EventName" style="display:none">js_event</div> <div id="BufferData" style="display:none">js_result</div> </body> </html> |
|||
20
golem14
25.07.18
✎
09:01
|
здесь dt выгрузка моего простого примера https://yadi.sk/d/Cc9U85Ok3ZYQkG
|
|||
21
novichok79
25.07.18
✎
09:02
|
&НаКлиенте
Процедура ОпределитьШиринуНадписи(Команда) Объект.ШиринаТекста = ОпределитьШиринуНадписиНаКлиенте(); КонецПроцедуры &НаКлиенте Функция ОпределитьШиринуНадписиНаКлиенте() ТипЧисло100 = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Любой)); Элементы.ПолеHTMLДокумента.Документ.getElementById("ExtCommand").innerHTML = ПодставитьПараметрыВСтроку("GetFontSize1C(""%1"", ""%2"")", Объект.ТекстНадписи, Объект.ОпределениеШрифта); КнопкаSendEvent = Элементы.ПолеHTMLДокумента.Документ.getElementById("SendEvent"); РезультатВыполненияКоманды = КнопкаSendEvent.fireEvent("onclick"); Если РезультатВыполненияКоманды Тогда РезультатФункции = ТипЧисло100.ПривестиЗначение( Элементы.ПолеHTMLДокумента.Документ.getElementById("BufferData").innerHTML); Иначе РезультатФункции = 0; КонецЕсли; Если ТипЗнч(РезультатФункции) <> Тип("Число") Тогда РезультатФункции = 0; КонецЕсли; Возврат РезультатФункции; КонецФункции |
|||
22
novichok79
25.07.18
✎
09:03
|
первое - это текст документа, второе - код обработки в 1С.
|
|||
23
sitex
naïve
25.07.18
✎
09:10
|
(16) ну напиши так в теле <body onload=""document.write('qwerty')"" > выведет один раз
|
|||
24
sitex
naïve
25.07.18
✎
09:15
|
либо в добавь <script> window.onload = function () {
document.write('qwerty'); тоже должно вывести один раз |
|||
25
golem14
25.07.18
✎
09:19
|
(24) так работает да. эх костыли.
|
|||
26
sitex
naïve
25.07.18
✎
09:21
|
(24) Этот вариант предпочтительней использовать. так ты хоть будешь контролировать что у тебя выводиться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |