Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кто разбирается в JavaScript, программно запустить скрипт на странице TwebBrowser в Delphi / 3 сообщений из 3, страница 1 из 1
17.08.2021, 11:41
    #40091161
Lexx_rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто разбирается в JavaScript, программно запустить скрипт на странице TwebBrowser в Delphi
Всем привет! Помогите разобраться как сделать программно выборку элемента "SELECT", на котором висит скрипт. Я уже разобрался как выбирать сам элемент, как запускать скрипты, но плохо понимаю Java, помогите разобраться?

Вот часть парса страницы на которой расположен компонент "Select" и есть исполняющий скрипт, но он как-то странно привязан к элементу, не могу понять как.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
<script id="nodeTemplate_doTEngine" type="text/html">	
	{{~ it.$data.nodes() :node:ni }}	
		{{ var nodeContext = it.createChildContext(node); }}
		<li class="{{= ko.utils.unwrapObservable(node.listItemClass) }}">			
			<div class="node-caption">
				{{? node.available }}
				<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="attr: { 'class': expandeeClass }, click: $root.toggleExpand"></div>
				{{?}}
	
				<div class="gap">&nbsp;</div>				
				{{? node.available }}
					{{? it.$root.showCheckBoxes }}									
					<input type="checkbox" class="checker -has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="checked: checked" />
					{{?}}
	
					<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="attr: { 'class': nodeNameClass }">
						<span class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="click: $root.toggleExpand">{{= ko.utils.unwrapObservable(node.name) }}</span>
					</div>
				{{??}}			
					<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="attr: { 'class': nodeNameClass }">
						<span>{{= ko.utils.unwrapObservable(node.name) }}</span>
					</div>
				{{?}}
			</div>
		
			<div style="clear:both;"></div>
	
			{{? !node.dynamicContent }}		
				<ul class="{{= node.subListClass() }} -has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="visible: expanded">						
					{{= nodeContext.renderTemplate(node.template(), node) }}				
				</ul>
			{{??}}					
				<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="if: dynamicData">	
					<div data-bind="visible: expanded">		
						<div data-bind="template: { name: $root.dynamicContentTemplate, data: dynamicData }"></div>
					</div>	
				</div>
			{{?}}				
		</li>
	{{~}}
</script>	<script type="text/javascript">$(function(){var element = $('#MaterialsCatalogue-637648010709303119'), viewModel = null;$.post('/Admin/Info/GetCourse', function(json){viewModel = new MaterialsTree(element, json, {id:'MaterialsCatalogue-637648010709303119',templateEngine: 'doTEngine',checkboxes:false,materialsLink:'javascript:showCourseInfo({id});'});element.data('viewModel', viewModel);ko.applyBindings(viewModel, element[0]);}, 'json');});</script></div>
	
	<div id="course-info-dialog">
	<script id="delete-button-template" type="text/html">
	<button data-bind="click: deleteTicket">Удалить билет</button>
</script>	

<div id="course-info">
	<h1 data-bind="text: courseName"></h1>	
	<div class="block">
		<table class="form-table">
			<tr class="first">		
				<th>Количество билетов</th>
				<td data-bind="text: tickets().length"></td>
			</tr>		
			<tr>		
				<th>Количество вопросов в билете</th>
				<td data-bind="text: ticketSize"></td>
			</tr>	
			<tr>		
				<th>Количество допустимых ошибок</th>
				<td data-bind="text: maxErrors"></td>
			</tr>
			<tr class='last'>		
				<th>Билеты</th>
				<td>
					<select data-bind="
						options: tickets, 
						optionsText: 'title', 
						value: selectedTicket">
					</select>
				</td>
			</tr>			
		</table>
	</div>

	<h1 data-bind="text: selectedTicketTitle"></h1>	
</div>


В общем, нужно программно выбирать билеты из комбобокса, там их 30 шт, при выборе Option.selected:=true где option:IHtmlOptionElement, ничего не происходит.
...
Рейтинг: 0 / 0
17.08.2021, 12:21
    #40091170
Lexx_rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто разбирается в JavaScript, программно запустить скрипт на странице TwebBrowser в Delphi
Кому нужно, вот полный парс страницы.
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
<!DOCTYPE html>
<html>
	<head>
    
<meta http-equiv="X-UA-Compatible" content="IE=10; IE=9; IE=8; IE=7; IE=EDGE" />
        <link rel="shortcut icon" href="/Content/Images/favicon.ico" type="image/x-icon" />
		
		
    
	
	
	
	<title>Курсы</title>		
		
	
	
	

<link href="/Content/jquery-ui-1.8.18__3.3.41.25369.css" rel="stylesheet" /><link href="/Content/olimp__3.3.41.25369.css" rel="stylesheet" /><link href="/Content/olimp.controls__3.3.41.25369.css" rel="stylesheet" />
		<!--[if IE]><link rel="stylesheet" href="/Content/olimp.ie.css" /><![endif]-->		
		<!--[if IE 8]><link rel="stylesheet" href="/Content/olimp.ie8.css" /><![endif]-->
		<!--[if lt IE 8]><link rel="stylesheet" href="/Content/olimp.ie7.css" /><![endif]-->
		<!--[if lte IE 6]><link rel="stylesheet" href="/Content/olimp.ie6.css" /><![endif]-->
    
	
	
	
			
		
	
	

<script type="text/javascript" src="/Scripts/ready.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/jquery-1.7.1.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/jquery-ui-1.8.19.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/jquery.unobtrusive-ajax.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/jquery.validate.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/jquery.validate.unobtrusive.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/knockout-2.1.0__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/knockout.mapping-2.3.0__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/doT.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/jquery.cookie__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/q.min__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/Olimp__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/Olimp.ViewModels__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/Olimp.Controls__3.3.41.25369.js"></script><script type="text/javascript" src="/Scripts/jquery.ui.datepicker-ru.js"></script>
		
    
	
		
		
			
		
	
	


    <script>$.Olimp.ensureWorkplaceToken('62d52c3d-f674-42b3-b4ac-40b1ac75c076')</script>	
    <!--[if lt IE 7]>
        <style>#no-feature-message { position: absolute; top: 6px; }</style>
    <![endif]-->
<title>

</title></head>
	<body >
        
    <script>
        domready(function () {
            if (!$.Olimp.hasWorkplaceToken()) {
                var div = document.createElement("div");
                div.className = 'error-message no-feature-message';
                div.style['width'] = '400px';
                div.style['margin-left'] = '-200px';
                div.innerHTML = '<b>Отключены Cookie.</b> Для корректной работы системы необходимо включить Cookie в настройках браузера и обновить страницу.';
                document.body.appendChild(div);
            }
        });
    </script>
    <noscript>
        <div class="error-message no-feature-message" style="width: 400px; margin-left: -200px;"><b>Отключен JavaScript.</b> Для корректной работы системы необходимо разрешить выполнение сценариев в настройках браузера и обновить страницу.</div>
    </noscript>

		<div class="wrapper">
			
    
	<div id="status">
		
	
	<form action="/Auth/Logout" id="logout-form" method="post"></form><script type="text/javascript">
	function logout() { $('#logout-form')[0].submit() }
	</script>
	
	<a class="status-link" href="javascript: logout()">
		<div class="icon icon-exit"></div>
		<div class="text">Выйти из системы</div>
	</a>	
	

	</div>
	
	<div id="head">
		<a href="/" class="logo" >
	<img src="/Content/Images/logo.gif" alt="На главную" />
</a>
	<div class="navigation">
		<div class="tabs">
			<div class="wrap">
				
	<a href="/Admin/ModeRegistrations">Администрирование</a><a href="/Admin/Courses">Материалы</a><a href="/Admin/Archive/ArchiveSearch">Архив</a><a href="/Admin/Activity/Current">Активность</a><a href="/Admin/NormativeInfo">Нормативы</a><a class="active" href="/Admin/Info/TreeInfo">Курсы</a><a href="/Admin/Group">Регистрация</a><a href="/Admin/Profile/Manage">Профили</a>
			</div>
		</div>
		<div class="body">
			
	
	<div class="links"><a class="active" href="/Admin/Info/TreeInfo">Информация о курсах</a><a href="/Admin/GeneratorTests">Генератор тестов</a><a href="/Admin/CreateCourse">Создание учебных курсов</a></div>	

		</div>
	</div>	

	</div>

	<div id="main">
		
	
	<script type="text/javascript">
	$(function() { $('#head .navigation').olimpmenu() })
	</script>	
			
	

	<script type="text/javascript">
	function showCourseInfo(materialId) { $('#course-info-dialog').data('viewModel').materialId(materialId) }		
		
	function showQuestionInfo() {
		var materialId = $('#course-info-dialog').data('viewModel').materialId(),
			questionId = this.Id(),
			dialog = $('#question-info-dialog');
		
		dialog.load(
			'/Admin/Archive/QuestionInfo', 
			{ materialId: materialId, questionId: questionId }, 
			function() { dialog.olimpdialog('open') });
	}
		
	$(function() {
		var viewModel = { 
			selectedTicketTitle: ko.observable(''),
			allowDeleteTickets: ko.observable(false),			
			courseName: ko.observable(''),
			tickets: ko.observableArray([]),
			ticketSize: ko.observable(),
			maxErrors: ko.observable()
		},
		dialog = $('#course-info-dialog'),
		selectedTicket = ko.observable(),
		materialId = ko.observable();
		
		viewModel.selectedTicket = ko.computed({
			read: function() { return selectedTicket() },
			write: function(value) {		
				var self = this;
				if (!self.materialId())
					return;
		
				$.post('/Admin/Info/GetTicketInfo', 
					{ materialId: self.materialId(), ticketId: value.id() },
					function(tableData) {
						$('#ticket-questions').data('viewModel').setRows(tableData)
						self.selectedTicketTitle(value.title())						
		
						selectedTicket(value);
						
						dialog.olimpdialog('option', 'position', 'center').olimpdialog('open');
					},
					'json')					
			},
			owner: viewModel
		}).extend({ throttle: 100 });
		
		viewModel.materialId = ko.computed({
			read: function() { return materialId(); },
			write: function(value) {
				var self = this;
				materialId(value);
				$.post('/Admin/Info/GetCourseInfo', { id: value }, function(json) {											
					ko.mapping.fromJS(json, {}, self)
				}, 'json');
			},
			owner: viewModel
		})
		
		var courseInfoNode = $('#course-info');
		ko.applyBindings(viewModel, courseInfoNode[0])		
		courseInfoNode.find('select').combobox();
		
		ko.applyBindings({
			allowDeleteTickets: ko.computed(function() { return viewModel.allowDeleteTickets() }),
			deleteTicket: function() {
				if (!confirm('Билет будет удален. Продолжить?')) return;
		
				$.post('/Admin/Info/DeleteTicket', 
					{ materialId: viewModel.materialId(), ticketId: viewModel.selectedTicket().id() },
					function() { 
						viewModel.tickets.remove(viewModel.selectedTicket()) 
						if (!viewModel.tickets().length) {		
							viewModel.selectedTicket(null);
							viewModel.selectedTicketTitle('');
							viewModel.allowDeleteTickets(false);
							$('#ticket-questions').data('viewModel').setRows({ rows: [], rowsCount: 0 })							
						}
					})
			},
			pretifyButton: function() { $('#ticket-actions button').olimpbutton() }
		}, $('#ticket-actions')[0]);
		
		dialog.data('viewModel', viewModel)
			.olimpdialog({ autoOpen: false, draggable: false, resizable: false, modal: true, width: '70%', fixedHeight: 0.9, title: 'Информация по курсу' });	
		
		$('#question-info-dialog').olimpdialog({ 
			autoOpen: false, modal: true, resizable: false, draggable: false, width: '60%', title: 'Информация о вопросе' });
	})
	</script>
		
	<h1>Информация о курсах</h1>	
	<div class="block">
	<ul id="MaterialsCatalogue-637648010709303119" class="catalogue without-checkboxes" class="ui-widget ui-widget-content materials-tree" data-bind="template: { name: 'nodeTemplate_doTEngine', templateEngine: $root.templateEngine }"></ul><div style="clear:both;"></div><script id="defaultMaterialNameTemplate_doTEngine" type="text/html">
	<span>{{= it.$data.code() }}&nbsp;{{= it.$data.name() }}</span>
</script>	
		
<script id="materialTemplate_doTEngine" type="text/html">	
	{{~ it.$data.materials() :material:mi }}
		{{ var materialContext = it.createChildContext(material); }}
		<li class="-has-dot-binding" data-dot-context="{{= materialContext.$$contextId }}" data-dot-bind="attr: { 'class': listItemClass }">
			<div class="gap">&nbsp;</div>
			<div class="node-caption">
				{{? it.$root.showCheckBoxes }}			
				<input type="checkbox" class="checker -has-dot-binding" name="{{= it.$root.checkBoxesName }}" value="{{= material.id }}" data-dot-context="{{= materialContext.$$contextId }}" data-dot-bind="checked: selected" />
				{{?}}
			
				<div class="{{= material.iconClass() }}"></div>
	
				{{? !it.$root.materialTemplate }}
					<div class="material-name">{{= material.caption }}</div>
				{{??}}
					<div class="material-name">
						{{= materialContext.renderTemplate(it.$root.materialTemplate, material) }}
					</div>
				{{?}}
			</div>
		</li>	
	{{~}}
</script>	

<script id="nodeTemplate_doTEngine" type="text/html">	
	{{~ it.$data.nodes() :node:ni }}	
		{{ var nodeContext = it.createChildContext(node); }}
		<li class="{{= ko.utils.unwrapObservable(node.listItemClass) }}">			
			<div class="node-caption">
				{{? node.available }}
				<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="attr: { 'class': expandeeClass }, click: $root.toggleExpand"></div>
				{{?}}
	
				<div class="gap">&nbsp;</div>				
				{{? node.available }}
					{{? it.$root.showCheckBoxes }}									
					<input type="checkbox" class="checker -has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="checked: checked" />
					{{?}}
	
					<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="attr: { 'class': nodeNameClass }">
						<span class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="click: $root.toggleExpand">{{= ko.utils.unwrapObservable(node.name) }}</span>
					</div>
				{{??}}			
					<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="attr: { 'class': nodeNameClass }">
						<span>{{= ko.utils.unwrapObservable(node.name) }}</span>
					</div>
				{{?}}
			</div>
		
			<div style="clear:both;"></div>
	
			{{? !node.dynamicContent }}		
				<ul class="{{= node.subListClass() }} -has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="visible: expanded">						
					{{= nodeContext.renderTemplate(node.template(), node) }}				
				</ul>
			{{??}}					
				<div class="-has-dot-binding" data-dot-context="{{= nodeContext.$$contextId }}" data-dot-bind="if: dynamicData">	
					<div data-bind="visible: expanded">		
						<div data-bind="template: { name: $root.dynamicContentTemplate, data: dynamicData }"></div>
					</div>	
				</div>
			{{?}}				
		</li>
	{{~}}
</script>	<script type="text/javascript">$(function(){var element = $('#MaterialsCatalogue-637648010709303119'), viewModel = null;$.post('/Admin/Info/GetCourse', function(json){viewModel = new MaterialsTree(element, json, {id:'MaterialsCatalogue-637648010709303119',templateEngine: 'doTEngine',checkboxes:false,materialsLink:'javascript:showCourseInfo({id});'});element.data('viewModel', viewModel);ko.applyBindings(viewModel, element[0]);}, 'json');});</script></div>
	
	<div id="course-info-dialog">
	<script id="delete-button-template" type="text/html">
	<button data-bind="click: deleteTicket">Удалить билет</button>
</script>	

<div id="course-info">
	<h1 data-bind="text: courseName"></h1>	
	<div class="block">
		<table class="form-table">
			<tr class="first">		
				<th>Количество билетов</th>
				<td data-bind="text: tickets().length"></td>
			</tr>		
			<tr>		
				<th>Количество вопросов в билете</th>
				<td data-bind="text: ticketSize"></td>
			</tr>	
			<tr>		
				<th>Количество допустимых ошибок</th>
				<td data-bind="text: maxErrors"></td>
			</tr>
			<tr class='last'>		
				<th>Билеты</th>
				<td>
					<select data-bind="
						options: tickets, 
						optionsText: 'title', 
						value: selectedTicket">
					</select>
				</td>
			</tr>			
		</table>
	</div>

	<h1 data-bind="text: selectedTicketTitle"></h1>	
</div>

<script id="question-info-action" type="text/html">
	<a href="#" class="icon icon-info action" data-bind="click: showQuestionInfo" title="Просмотреть вопрос"></a>
</script>	

<script id="answer-result" type="text/html">
	<!-- ko if: Correct -->Правильный ответ
	<!-- /ko -->

	<!-- ko ifnot: Correct -->Неправильный ответ
	<!-- /ko -->
</script><script id="question-template" type="text/html">
    <div data-bind="html: $data.Text"></div>
    <div id="question-main-img-result" style="width: 40%;" data-bind="html: $data.QuestionMainImg"></div>
</script>

<script id="question-template-result" type="text/html">
    <div data-bind="html: $data.Question"></div>
    <div id="question-main-img-result" style="padding-right: 10px" data-bind="html: $data.QuestionMainImg"></div>
</script><div class="block">
	<script id="tableHeadTemplate" type="text/html">
	<tr>
        <!-- ko if: $root.rowHighlighting -->
        <th class="highlight"></th>
        <!-- /ko -->

		<!-- ko if: actions().length -->
			<!-- ko if: $root.headerActions -->
				<th class="min-size" data-bind="foreach: $root.actions">
					<!-- ko ifnot: $data.templateId -->&nbsp;<!-- /ko -->
	
					<!-- ko if: $data.templateId -->
					<!-- ko template: { name: templateId, data: { _header:true }, templateEngine: $root.tbodyEngine } --> <!-- /ko -->
					<!-- /ko -->
				</th>
			<!-- /ko -->
	
			<!-- ko ifnot: $root.headerActions -->
				<th class="min-size">&nbsp;</th>
			<!-- /ko -->
		<!-- /ko -->
	
		<!-- ko if: $root.checkboxes -->
			<th class="min-size checkbox"><input type="checkbox" data-bind="checked: allChecked" /></th>
		<!-- /ko  -->
	
		<!-- ko foreach: columns -->
		<th data-bind="style: style">
			<a data-bind="text: caption, attr: _attrs, click: $root._sort"></a>
	
			<!-- ko if: $root.sorting -->
			<span data-bind="attr: { 'class': sortClass }"></span>
			<!-- /ko -->
		</th>
		<!-- /ko -->
	</tr>	
</script>

<script id="tableBodyTemplate" type="text/html">		
	<!-- ko foreach: rows -->
	<tr data-bind="attr: { 'class': _className }, click: $root._rowHighlight.bind($data)">
        <!-- ko if: $root.rowHighlighting -->
        <td class="highlight"></td>
        <!-- /ko -->

		<!-- ko if: $root.actions().length -->
			<!-- ko ifnot: _isLocked -->
			<td class="actions" data-bind="foreach: $root.actions">
				<!-- ko ifnot: $data.templateId -->
				<a data-bind="attr: attrs, click: $root._rowAction.bind($data, $parent)"></a>
				<!-- /ko -->
	
				<!-- ko if: $data.templateId -->
				<!-- ko template: { name: templateId, data: $parent } --> <!-- /ko -->
				<!-- /ko -->
			</td>
			<!-- /ko -->
	
			<!-- ko if: _isLocked -->
			<td class="actions">
				<a class="icon icon-lock-small-active action" title="Действия заблокированы"></a>
			</td>
			<!-- /ko -->
		<!-- /ko -->
	
		<!-- ko if: $root.checkboxes -->
			<td class="checkbox">
				<input type="checkbox" data-bind="checked: _checked" />
			</td>
		<!-- /ko  -->
	
		<!-- ko foreach: $root.columns -->
			<!-- ko if: $data.templateId -->
				<td data-bind="template: { name: templateId, data: $parent}"></td>
			<!-- /ko -->
	
			<!-- ko ifnot: $data.templateId -->					
				<td data-bind="html: $parent[$data.name]"></td>
			<!-- /ko -->
		<!-- /ko -->
	</tr>
	<!-- /ko -->	
</script>	

<script id="tableGroupsTemplate" type="text/html">		
	<!-- ko foreach: groups -->
		<tr class="odd">
			<td class="grouping" data-bind="attr: { colSpan: $root.columnsCount }, text: name"></td>		
		</tr>
		<!-- ko template: { name: 'tableBodyTemplate', data: $data } -->	
		<!-- /ko -->	
	<!-- /ko -->
</script>		

<script id="tablePagingTemplate" type="text/html">	
    <!-- ko if: checkboxes -->
    <div class="selected-items-count">
        <span>выбрано:&nbsp;</span>
        <span data-bind="text: selectedItemsCount"></span>
    </div>

    <!-- ko foreach: selectedIds -->
    <input type="hidden" data-bind="attr: { name: $root.checkboxesName, value: $data }" />
    <!-- /ko -->

    <!-- /ko -->
	<div class="pages">
		<a href="#" class="icon icon-left" data-bind="click: paging.leftPage"></a>        
		<div class="links">
			<!-- ko foreach: paging.pages -->				
				<!-- ko if: isSeparator -->
				<span class="separator">...</span>
				<!-- /ko -->
	
				<!-- ko ifnot: isSeparator -->
				<a href="#" data-bind="text: number, attr: { 'class': selectedClass }, click: $root.paging.select"></a>
				<!-- /ko -->	
			<!-- /ko -->
		</div>
		<a href="#" class="icon icon-right" data-bind="click: paging.rightPage"></a>	
	</div>
	<div class="total">
		<span>на странице:</span>
		<select data-bind="
			optionsText: function(item) { return item === 99999 ? 'Все' : item },
			options: paging.rowAmounts, 
			value: paging.size">				
		</select>
	</div>
	<div class="status">
		<span>результаты</span>
		<span data-bind="text: paging.rowsSpan"></span><span>&nbsp;из</span>
		<span data-bind="text: rowsCount"></span>
	</div>	
</script>	

<script id="tableButtonsTemplate" type="text/html">		
	<!-- ko if: adding -->
	<button type="button" data-bind="text: adding.text, click: adding.action"></button>			
	<!-- /ko -->
		
	<!-- ko foreach: tableActions -->
	<button type="button" data-bind="text: text, style: style, click: $root._tableAction.bind($data)"></button>			
	<!-- /ko -->	
</script>	

<script id="tableTemplate" type="text/html">
	<div class="body">
		<table cellpadding="0" cellspacing="0">
			<thead data-bind="template: { name: 'tableHeadTemplate', data: $data }"></thead>
			<tbody data-bind="template: { name: $root.tbodyTemplate, data: $data, templateEngine: $root.tbodyEngine }"></tbody>
		</table>
	</div>
	
	<!-- ko if: paging -->
	<div class="paging" data-bind="template: { name: 'tablePagingTemplate', data: $data, afterRender: paging.reset }"></div>
	<!-- /ko -->
	
	<!-- ko if: buttons -->
	<div class="buttons" data-bind="template: { name: 'tableButtonsTemplate', data: $data }"></div>
	<!-- /ko -->
	
</script>	

<div class="table" data-bind="template: &#39;tableTemplate&#39;" id="ticket-questions"></div><script type="text/javascript">$(function() { var table=$('#ticket-questions'), viewModel=new Table([{'name':'Number','caption':'№'},{'name':'Text','caption':'Вопрос','templateId':'question-template'}], {sorting:false,paging:false,actions:[new RowAction('', null, {templateId:'question-info-action'})]});table.data('viewModel', viewModel);ko.applyBindings(viewModel, table[0]);})</script></div>

<div id="ticket-actions" data-bind="if: allowDeleteTickets">
	<div data-bind="template: { 
		name: 'delete-button-template',
		afterRender: pretifyButton }">
	</div>
</div>


</div>
	
	<div id="question-info-dialog"></div>

		
		
	

	</div>

	<div id="foot"></div>


		</div>
	</body>
</html>

...
Рейтинг: 0 / 0
18.08.2021, 13:42
    #40091482
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто разбирается в JavaScript, программно запустить скрипт на странице TwebBrowser в Delphi
Скорее всего, никак, и чем дальше, тем больше долбаных фреймворков, где все реализуется скриптами, тем меньше можно будет имитировать сторонними средствами. Но всегда остается классическая имитация кликов
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кто разбирается в JavaScript, программно запустить скрипт на странице TwebBrowser в Delphi / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]