Тема: HTA: работа с внешними веб-страницами
Автор - mozers.
HTA-приложение загружает указанную веб-страницу, находит указанный текст и подсвечивает все вхождения этого текста. После этого возможен переход по вхождениям, а также zoom страницы (+/-). Можно использовать для организации поиска по справке каких-либо (например, своих собственных скриптовых) программ.
Пример запуска: "HTML_help.hta" "g:\SciTE\doc\SciTEDoc.html" "command.mode"
(первый параметр - путь к файлу справки, второй - текст, который надо в нём найти).
Горячие клавиши:
Esc - выход
F3 - переход по найденным вхождениям
F5 - начать заново
Плюс и Минус в правой части клавиатуры - zoom
<html>
<head>
<meta http-equiv=Content-Type content="text-html; charset=windows-1251">
<meta http-equiv=MSThemeCompatible content=yes>
<meta name=author content=mozers™>
<meta name=generator content=SciTE-Ru>
<hta:application
id=HTA
applicationName=html_HELP
icon=winhlp32.exe
maximizeButton=yes
innerBorder=no
scroll=no
selection=yes
contextMenu=yes
singleinstance=yes
version=1.1
>
<script language=JavaScript>
function Shortcuts(evnt, pane){
if (pane == 0){
var pane = self;
} else {
var pane = parent;
}
switch(evnt.keyCode){
case 116: // F5 - отменяем рефреш
pane.event.cancelBubble = true;
pane.event.returnValue = false;
return(false);
break;
case 27: //Esc - выход
pane.window.close(true);
break;
case 114: //F3 - следующее вхождение
pane.FindNext();
break;
case 107: // серый +
case 187: // +
pane.Zoom(5);
break;
case 109: // серый -
case 189: // -
pane.Zoom(-5);
break;
}
return;
}
document.onkeydown = function(){Shortcuts(event, 0)}
function html_doc_onkeydown(){
Shortcuts(html_doc.event, 1);
}
</script>
<style type="text/css">
body, table {font:bold 8px "MS Sans Serif"; color:#000080; background-color:threedface; cursor:default; margin:0px;}
input {font-family:"MS Sans Serif"; font-size:8px;}
input.p {font:bold 8px "Courier New"; color:#000080; width:15pt; text-align:center;}
</style>
<title>html HELP</title>
</head><body>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
Zoom:
<INPUT class="p" TYPE="button" Value="-" onClick="Zoom(-5);" title="ZoomIn [-]">
<INPUT name="txtZoom" TYPE=text value="100%" style="width:40px; text-align:center;" DISABLED>
<INPUT class="p" TYPE="button" Value="+" onClick="Zoom(5);" title="ZoomOut [+]">
</td>
<td align="right">
Find: <INPUT name=sText TYPE=text value="" style="width:30%" onClick="SearchReset();">
<INPUT style="color:#000080" NAME="btnSearch" TYPE="button" Value="Search" onClick="Find();" title="Find Next [F3]">
</td>
</tr>
</table>
<script language=JavaScript>
// Читаем аргументы ком.строки
var cmd = HTA.commandLine;
var re=/"(.*?)"/g;
var Arr_cmd = re.exec(cmd);
Arr_cmd = re.exec(cmd);
if (Arr_cmd) {
var help_path = Arr_cmd[1];
var text_find = "";
Arr_cmd = re.exec(cmd);
if (Arr_cmd) {
text_find = Arr_cmd[1];
sText.value = text_find;
}
} else {
alert ('Command line:\n html_HELP.hta "c:\\path\\doc.html" "find_string"');
window.close(false);
}
var find_num=0;
var find_num_max=0;
var TextRange;
var zoom = 100;
function FindStart(){
TextRange.execCommand('BackColor', '', '');
for(var i = 0; TextRange.findText(sText.value); i++){
TextRange.execCommand('BackColor','','yellow');
TextRange.collapse(false);
}
return i;
}
function FindNext(){
if (find_num == 0) {TextRange = html_doc.document.body.createTextRange();}
TextRange.findText(sText.value);
TextRange.select();
TextRange.collapse(false);
find_num++;
if (find_num >= find_num_max){find_num = 0}
btnSearch.value='Go to ' + (find_num+1) + ' (in '+ find_num_max +')';
}
function Find(){
if (sText.value == ""){return;}
if (find_num_max == 0){
TextRange = html_doc.document.body.createTextRange();
find_num_max = FindStart();
if (find_num_max == 0) {
btnSearch.value = 'Not Found';
btnSearch.disabled = true;
sText.style.backgroundColor = "#FF9999";
}else{
btnSearch.value = 'Go to 1 (in ' + find_num_max +')';
}
}else{
FindNext();
}
}
function SearchReset(){
sText.value = '';
btnSearch.value = 'Search';
btnSearch.disabled = false;
sText.style.backgroundColor = "window";
find_num_max = 0;
}
function Zoom(i){
zoom = zoom + i;
html_doc.document.body.style.zoom = zoom + "%";
txtZoom.value = zoom + "%";
}
function on_load() {
html_doc.document.onkeydown = function() {parent.html_doc_onkeydown()};
document.title = html_doc.document.title + " - " + HTA.applicationName.replace(/_/g,' ') + ' ' + HTA.version;
Find();
if (find_num_max>0){FindNext();}
}
document.write('<div style="width:100%; height:100%;"><IFRAME onLoad="on_load();" id="html_doc" src="'+help_path+'" width="100%" height="100%" style="padding-bottom:20px;"><\/IFRAME><\/div>');
</script>
</body>
</html>
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.