Вверх ↑
Ответов: 186
Рейтинг: 9
#1: 2013-05-17 08:32:20 ЛС | профиль | цитата
Привет всем.

Очень нужна помощь.
Необходимо получить результат работы javascript из компонента WebBrowser в виде txt или HTML.

В таблице в схеме можно, вкл. выкл. chekbox, radio, и писать в text.
Но результат этих действий не удается получить из компонента WebBrowser, пробовал
1.Page - там исходный HTML
2.doSavePage - так же сохраняется исходный HTML

code_30993.txt

Нашел на форуме похожий пост.
Но ответа там нет. http://forum.hiasm.com/forum.html?q=3&p=211721
------------ Дoбавленo в 08.32:
Проблема пока открыта. Но есть положительное движение.

1. Доработал схему что бы HTML стал файлом на ПК (теперь есть локальный URL).

Add(WebBrowser,12547016,546,273)
{
Width=995
Height=668
Align=5
Point(doFromText)
Point(doPrint)
Point(doPreview)
Point(doSavePage)
link(URL,6007086:Value,[(552,261)(493,261)(493,317)(454,317)])
}
Add(Button,10054620,217,273)
{
Left=10
Top=5
Caption="Создать"
link(onClick,2088541:doConvert,[])
}
Add(StrList,1755741,280,203)
{
Strings=#21:<!--Начало вставки-->|7:<style>|25:table{margin-left: 50px;}|47:#section1, #section2, #section3{display: none;}|23:.hidden{display: none;}|137:.button{position: absolute; padding: 2px; font-size: 12px; font-weight: bold; border: none; width: 15px; height: 15px; line-height: 8px;}|21:.section{left: 20px;}|24:.subSection{left: 40px;}|8:</style>|9:</script>|8:<script>|17:function check(){|27:if(this.type=="checkbox"){|66:var cells=this.parentNode.parentNode.getElementsByTagName("td");|133:cells[9].innerHTML=(this.checked)?cells[4].innerHTML.replace(/<!--.*-->/i, "")+"<!-- Код РЦЦС выбор -->":"<!-- Код РЦЦС выбор -->";|2:}|29:else if(this.type=="radio"){|49:var rows=document.getElementsByName(this.name);|35:for(var i=0; i<rows.length; i++){|70:var cells=rows[i].parentNode.parentNode.getElementsByTagName("td");|158:if(cells.length==11) cells[9].innerHTML=(rows[i].checked)?cells[4].innerHTML.replace(/<!--.*-->/i, "")+"<!-- Код РЦЦС выбор -->":"<!-- Код РЦЦС выбор -->";|3:}|2:}|67:else if(this.type=="text") this.setAttribute('value', this.value);|1:}|0:|32:function toggleSection(section){|21:if(this.value=="-"){|21:var display="none";|17:this.value="+";|2:}|6:else{|60:if(window.getComputedStyle) var display="table-row-group";|27:else var display="block";|17:this.value="-";|2:}|56:document.getElementById(section).style.display=display;|1:}|0:|35:function toggleSubSection(section){|21:if(this.value=="-"){|21:var display="none";|17:this.value="+";|2:}|6:else{|54:if(window.getComputedStyle) var display="table-row";|27:else var display="block";|17:this.value="-";|2:}|41:var startRow=this.parentNode.parentNode;|25:for(var i=0; i<20; i++){|34:if(!startRow.nextSibling) break;|42:if(startRow.nextSibling.nodeName=="TR"){|104:if(startRow.nextSibling.getAttribute("section")==section) startRow.nextSibling.style.display=display;|14:else break;|3:}|32:startRow=startRow.nextSibling;|2:}|1:}|9:</script>|20:<!--Конец вставки-->|0:|29:<table border=0 width="100%">|4:<TR>|77:<th COLSPAN=7 align="center" border=0><br>Протокол обработки прайс листа</th>|5:</TR>|4:<TR>|33:<th align="left" border=0>%3</th>|5:</TR>|8:</table>|32:<table border=1 cellpadding="3">|4:<TR>|51:<th ROWSPAN=2 width="60" align="center">№ п.п.</th>|50:<th COLSPAN=4 align="center">Данные из прайса</th>|58:<th COLSPAN=4 align="center">Данные из классификатора</th>|50:<th ROWSPAN=2 width="20" align="center">Выбор</th>|62:<th COLSPAN=2 width="60" align="center">Результаты выбора</th>|5:</TR>|4:<TR>|56:<th width="60" align="center">Наименование в прайсе</th>|42:<th width="60" align="center">Ед.Изм.</th>|39:<th width="60" align="center">Цена</th>|43:<th width="60" align="center">Код РЦЦС</th>|43:<th width="60" align="center">Код РЦЦС</th>|42:<th width="60" align="center">Код ССЦ</th>|64:<th width="60" align="center">Наименование в классификаторе</th>|42:<th width="60" align="center">Ед.Изм.</th>|43:<th width="60" align="center">Код РЦЦС</th>|48:<th align="center">Формула изменения Ед.Изм</th>|5:</TR>|4:<TR>|25:<th align="center">1</th>|25:<th align="center">2</th>|25:<th align="center">3</th>|25:<th align="center">4</th>|25:<th align="center">5</th>|25:<th align="center">6</th>|25:<th align="center">7</th>|25:<th align="center">8</th>|25:<th align="center">9</th>|26:<th align="center">10</th>|26:<th align="center">11</th>|26:<th align="center">12</th>|5:</TR>|22:<TR bgcolor="#98FB98">|207:<th COLSPAN=12 align="center"><input onclick="toggleSection.call(this, 'section1')" class="button section" type="button" value="+" />Раздел 1: Материалы имеющие точное совпадение с классификатором %5 шт</th>|22:<tbody id="section1"> |522:<tr align="center" bgcolor="#98FB98"> <th>1 <!-- Номер --> <td align="left">%2 <!-- Наименование прайс --> <td>%3 <!-- Ед.Изм. прайс --> <td>%4 <!-- ОТП --> <td>%5 <!-- Код РЦЦС прайс --> <td>%6 <!-- Код РЦЦС КЛ --> <td>%7 <!-- Код РССЦ КЛ --> <td>%8 <!-- Наименование КЛ --> <td>%9 <!-- Ед.Изм. КЛ --> <td><input onclick="check.call(this)" type="checkbox" name="%1" value="1" checked> <!-- Выбор --> <td>%6 <!-- Код РЦЦС выбор --> <td><input onchange="check.call(this)" type="text" name="%1" value="/10"> <!-- Формула -->|5:</TR>|8:</tbody>|22:<TR bgcolor="#FFFF00">|214:<th COLSPAN=12 align="center"><input onclick="toggleSection.call(this, 'section2')" class="button section" type="button" value="+" />Раздел 2: Материалы имеющие более одного совпадения с классификатором %6 шт</th>|22:<tbody id="section2"> |620:<tr align="center" bgcolor="#FFFF00"> <th><input onclick="toggleSubSection.call(this, 'subSection2')" class="button subSection" type="button" value="+" />2 <!-- Номер --> <td align="left">%2 <!-- Наименование прайс --> <td>%3 <!-- Ед.Изм. прайс --> <td>%4 <!-- ОТП --> <td>%5 <!-- Код РЦЦС прайс --> <td>%6 <!-- Код РЦЦС КЛ --> <td>%7 <!-- Код РССЦ КЛ --> <td>%8 <!-- Наименование КЛ --> <td>%9 <!-- Ед.Изм. КЛ --> <td><input onclick="check.call(this)" name="1" type="radio" value="0"> <!-- Выбор --> <td> <!-- Код РЦЦС выбор --> <td><input onchange="check.call(this)" type="text" name="%1" value="/10"> <!-- Формула -->|544:<tr section="subSection2" class="hidden" align="center" bgcolor="#FFFF00"> <th> <!-- Номер --> <td align="left">%2 <!-- Наименование прайс --> <td>%3 <!-- Ед.Изм. прайс --> <td>%4 <!-- ОТП --> <td>%5 <!-- Код РЦЦС прайс --> <td>%6 <!-- Код РЦЦС КЛ --> <td>%7 <!-- Код РССЦ КЛ --> <td>%8 <!-- Наименование КЛ --> <td>%9 <!-- Ед.Изм. КЛ --> <td><input onclick="check.call(this)" name="1" type="radio" value="0"> <!-- Выбор --> <td> <!-- Код РЦЦС выбор --> <td><input onchange="check.call(this)" type="text" name="%1" value="/10"> <!-- Формула -->|266:<tr section="subSection2" class="hidden" align="center" bgcolor="#E9967A"> <th> <td align="left"> <td> <td> <td> <td COLSPAN=4>Выбор не сделан <!-- не выбрано --> <td><input onclick="check.call(this)" name="1" type="radio" value="0" checked> <!-- Выбор --> <td> <td>|620:<tr align="center" bgcolor="#FFFF00"> <th><input onclick="toggleSubSection.call(this, 'subSection3')" class="button subSection" type="button" value="+" />3 <!-- Номер --> <td align="left">%2 <!-- Наименование прайс --> <td>%3 <!-- Ед.Изм. прайс --> <td>%4 <!-- ОТП --> <td>%5 <!-- Код РЦЦС прайс --> <td>%6 <!-- Код РЦЦС КЛ --> <td>%7 <!-- Код РССЦ КЛ --> <td>%8 <!-- Наименование КЛ --> <td>%9 <!-- Ед.Изм. КЛ --> <td><input onclick="check.call(this)" name="2" type="radio" value="0"> <!-- Выбор --> <td> <!-- Код РЦЦС выбор --> <td><input onchange="check.call(this)" type="text" name="%1" value="/10"> <!-- Формула -->|409:<tr section="subSection3" class="hidden" align="center" bgcolor="#FFFF00"> <th> <!-- Номер --> <td align="left">%2 <!-- Наименование прайс --> <td>%3 <!-- Ед.Изм. прайс --> <td>%4 <!-- ОТП --> <td>%5 <!-- Код РЦЦС прайс --> <td>%6 <!-- Код РЦЦС КЛ --> <td>%7 <!-- Код РССЦ КЛ --> <td>%8 <!-- Наименование КЛ --> <td>%9 <!-- Ед.Изм. КЛ --> <td> <!-- Выбор --> <td> <!-- Код РЦЦС выбор --> <td> <!-- Формула -->|266:<tr section="subSection3" class="hidden" align="center" bgcolor="#E9967A"> <th> <td align="left"> <td> <td> <td> <td COLSPAN=4>Выбор не сделан <!-- не выбрано --> <td><input onclick="check.call(this)" name="2" type="radio" value="0" checked> <!-- Выбор --> <td> <td>|5:</TR>|8:</tbody>|22:<TR bgcolor="#FA8072">|100:<th COLSPAN=12 align="center">Раздел 3: Материалы не имеющие совпадений с классификатором %7 шт</th>|5:</TR>|
}
Add(TempFileStream,3734618,385,273)
{
Prefix="priceobr"
Extention=".html"
link(onCreate,6007086:doValue,[])
link(Stream,2475929:Stream,[(391,261)(359,261)(359,317)(328,317)])
}
Add(Convertor,2088541,280,273)
{
Mode=12
link(onResult,2475929:doCopy,[])
link(Data,1755741:Text,[])
}
Add(MemoryStream,2475929,322,273)
{
link(onCopy,3734618:doCreate,[])
}
Add(Memory,6007086,448,273)
{
link(onData,10734578:doEvent1,[])
}
Add(Edit,9352744,532,371)
{
Left=75
Top=5
Width=635
}
Add(Hub,10734578,497,273)
{
link(onEvent1,12547016:doNavigate,[])
link(onEvent2,9352744:doText,[(521,286)(521,377)])
}


2. Понял что результат можно получить из DOM http://ru.wikipedia.org/wiki/Document_Object_Model, как оказалось javascript этого не может сделать, конечно есть innerHTML но для меня не подходит.

3. Думаю поможет этот код http://www.webdelphi.ru/2009/08/chto-mozhno-vytashhit-iz-doma/, НУЖНА ПОМОЩЬ С ЕГО ВНЕДРЕНИЕМ в Hiasm

#pas
var Doc: IHTMLDocument2; //экземпляр документа
procedure GetDom(const URL: string; idHTTP: TIdHTTP);
var Cache: string;
V: OleVariant;
begin
Cache:=IdHTTP.Get(url);
Doc:=coHTMLDocument.Create as IHTMLDocument2; //создали экземпляр документа
V:=VarArrayCreate([0,0], varVariant);
V[0]:=Cache;
Doc.Write(PSafeArray(TVarData(v).VArray)); //записали полученные данные
end;



карма: 0

0
файлы: 1code_30993.txt [8.9KB] [140]