heed
Участник форума

Joined: 03 Jan 2010
Posts: 97
Карма: 9 поощрить/наказать
|
Posted: Thu Mar 17, 2011 1:16 am ()
Post subject: onclick + буква диска + mshta.exe
|
|
... вроде простая задача, но не решается. Есть в корне диска такой файл.hta Code (html): | скопировать код в буфер обмена | <html> (december.com/html/4/element/html.html) <head> (december.com/html/4/element/head.html) <meta (december.com/html/4/element/meta.html) http-equiv="Content-Type" content="text/html; charset=utf-8" /> (december.com/html/4/element/.html) <title> (december.com/html/4/element/title.html)hta-примочка</title> <HTA:APPLICATION APPLICATIONNAME = "hta-примочка" SINGLEINSTANCE = "yes" ICON = "/1.ico" SCROLL = "no" MAXIMIZEBUTTON = "yes" NAVIGABLE = "no" SELECTION = "no" CONTEXTMENU = "no" BORDER = "thin" INNERBORDER = "yes" > (december.com/html/4/element/.html)< (december.com/html/4/element/.html)/HTA:APPLICATION> <style> (december.com/html/4/element/style.html) body { margin:0; background-image: url(/usr/scripts/1.png); } h1, h2, h3, h4 { margin:0; } a { color:#EEEEEE; text-decoration:none; font: bold 105% Lucida Console; textShadow: 1ex, 1ex, 1ex; } a:hover { text-decoration: underline; } table { width: 100%; border-collapse:collapse;} .ob, .ob_c { height: 3em; color: #DDDDBB; background-color: #000000; border:solid medium #300; filter: alpha(opacity=70) } .ob_c { text-align:center; } .w { } </style> <script> (december.com/html/4/element/script.html) function handleLaunchErr(msg,url,l) { alert(msg); return true; } onerror=handleLaunchErr;
function init() { // Обработчик событий для window.onload() var arr = document.body.getElementsByTagName('div') for (var d = 0; d < (december.com/html/4/element/.html) arr.length; d++) { arr[d].onmouseover = function() { opa(this, 90); }; arr[d].onmouseout = function() { opa(this, 70); }; } var disk = document.location.toString().substr(8,2); arr = document.body.getElementsByTagName('a') for (var d = 0; d < (december.com/html/4/element/.html) arr.length; d++) { x=arr[d].onclick.toString() arr[d].onclick = eval(x.replace(/\('/, "('"+disk)) // alert(arr[d].onclick) } }
// Открывает новое окно function popWindow(url, name) { var wndPopup = window.open(url,name,""); // окно на передний план if(wndPopup) wndPopup.focus(); }
function launch(program){ (new ActiveXObject('WScript.Shell')).Run(program); void(0); }
function opa(el, zn) { var css = el.style; css.filter = "alpha(opacity=" + zn + ")"; } </script> </head> <body onload="init();"> <div class="ob"></div> <table> <tr><td colspan="3"> <div class="ob_c"> <h2>Установка</h2> <a href="#" onClick="javascript:launch('\\usr\\scripts\\all.bat -i')">all.bat -i</a> </div> </td></tr> <tr> <td class="w"><div class="ob"> <a href="#" onClick="javascript:launch('\\usr\\scripts\\links.bat -i')"> > links.bat -i</a> </div></td> <td class="w"><div class="ob"> <a href="#" onClick="javascript:launch('\\usr\\scripts\\assoc.bat -i')"> > assoc.bat -i</a> </div></td> <td class="w"><div class="ob"> <a href="#" onClick="javascript:launch('\\usr\\scripts\\services.bat -i')"> > services.bat -i</a> </div></td> </tr> <tr><td colspan="3"> <div class="ob_c"> <h2>Удаление</h2> <a href="#" onClick="javascript:launch('\\usr\\scripts\\all.bat -u')">all.bat -u</a>
..... и так далее </div> </td></tr>
<tr><td colspan="3"> <div class="ob_c"> <a href="#" onclick="window.focus(); popWindow('\\usr\\scripts\\hlp.txt', 'wndReadme');" >справка</a> </div> </td></tr> </table> <div class="ob"></div> </body> </html> | букву диска получить не составило труда (в функции init()) а как подставить эту букву в пути ссылок ?... пробовал что-то вроде x=arr[d].onclick.toString() arr[d].onclick = eval(x.replace(/\('/, "('"+disk)) Неработает Это возможно? Относительные пути в onclick не работают, а текущая дирректория (и диск) не всегда там где этот файл // привык пользоваться деревом"панель инструментов"->компьютер. :)
|
|
heed
Участник форума

Joined: 03 Jan 2010
Posts: 97
Карма: 9 поощрить/наказать
|
Posted: Thu Mar 17, 2011 4:25 am (спустя 3 часа 9 минут; написано за 9 секунд)
Post subject:
|
|
Спасибо, получилось Пришлось создать глобальную var ScriptsPath = (document.location.toString().substr(8,2))+'\\usr\\scripts\\' и добавить в function launch(program){ (new ActiveXObject('WScript.Shell')).Run(ScriptsPath+program); void(0); } Оказалось так даже удобнее, и книжек почитал :)
|
|
heed
Участник форума

Joined: 03 Jan 2010
Posts: 97
Карма: 9 поощрить/наказать
|
Posted: Mon Apr 04, 2011 6:04 pm (спустя 18 дней 13 часов 38 минут; написано за 15 минут)
Post subject:
|
|
Подскажите пожалуйста почему в ие6 не получается нормально переходить по пунктам выпадающего меню вроде специально под ие6 решил сделать такую структуру с таблицами внутри ссылок Code (html): | скопировать код в буфер обмена | <div (december.com/html/4/element/div.html) id="menuC"> (december.com/html/4/element/.html) <table> (december.com/html/4/element/table.html) <tr> (december.com/html/4/element/tr.html) <td> (december.com/html/4/element/td.html)<a (december.com/html/4/element/a.html) href="#"> (december.com/html/4/element/.html)files <table> (december.com/html/4/element/table.html) <tr> (december.com/html/4/element/tr.html)<td> (december.com/html/4/element/td.html)<a (december.com/html/4/element/a.html) href="#"> (december.com/html/4/element/.html)1_files</a></td></tr> <tr> (december.com/html/4/element/tr.html)<td> (december.com/html/4/element/td.html)<a (december.com/html/4/element/a.html) href="#"> (december.com/html/4/element/.html)2_files</a></td></tr> </table> </a></td> ............ | т.е. валидация не нужна, поддержка браузеров кроме ie тоже (хотя не совсем ie, но что-то из него участвует) При onload скрываются подпункты Code (JavaScript): | скопировать код в буфер обмена | arr = document.getElementById('menuC').getElementsByTagName('a'); for (var d = 0; d < arr.length; d++) { th = arr[d] hid(th, 1); th.onmouseover = function() { hid(this, 0); } th.onmouseout = function() { hid(this, 1); } tmp = th.parentElement.parentElement.parentElement; if (tmp.parentElement.parentElement.tagName == 'DIV' && th.children[0]) { ch = th.children[0]; ch.style.top = ch.offsetTop + th.offsetHeight; ch.style.left = ch.offsetLeft - th.offsetWidth ; } } ..........
function hid(el, zn) { if (el.children.length==0) return; var css = el.children[0].style; css.display = (zn)? "none": "block"; } | в стилях такое Code (css): | скопировать код в буфер обмена | #menuC { width:100%; background-color: #EEE; border-bottom:solid 1px #999; } #menuC table { width:auto; } #menuC td { margin: 0; padding:0; border-width: 0;} #menuC a { color: #456; background-color: #EEE; display:block; text-align: center; font: normal 100% MS Sans Serif; margin: 0; } #menuC a:hover { color: #445; background-color: #FFF; } #menuC a table { background-color: #EEE; position: absolute; } | под winXP в которую устанавливался ie8 меню нормально работает , а под Server2003 с ie6 первый уровень меню нормально можно переходить, а второй нельзя. Хоть и слегка внахлёст смотрится // файл прикрепил
Description: |
|
 Download |
Filename: |
1.zip |
Filesize: |
2.47 KB |
Downloaded: |
346 Time(s) |
|
|
heed
Участник форума

Joined: 03 Jan 2010
Posts: 97
Карма: 9 поощрить/наказать
|
Posted: Thu Apr 07, 2011 12:00 pm (спустя 2 дня 17 часов 56 минут; написано за 14 минут 49 секунд)
Post subject:
|
|
Вроде решилась эта проблема, но не очень похоже на стандартные меню виндовс-приложений. Не особо умею кодить на css+javascript (особенно под IE) и не сильно ещё в своём коде разбирался :) но прикрепил, на случай если кому-то интересно. Кстати для денвера запросто можно было-бы сделать пакет типа "редактор конфиг.файлов" с например "Notepad2" и hta-стартера. Даже можно приделать конфиг для hta читаемый чем-нибудь вроде Code (JavaScript): | скопировать код в буфер обмена | function GetLine() { var fso, f, r; var ForReading = 1, ForWriting = 2; fso = new ActiveXObject("Scripting.FileSystemObject"); f = fso.OpenTextFile( CD+"\\X.txt", ForReading ); while (!f.AtEndOfStream) { r = f.ReadLine() alert('"'+r+'"'); } f.Close( ); } | но я уже запутался в своих сборках.) Только не знаю насколько одинаково hta запускаются в разных системах
Description: |
|
 Download |
Filename: |
1.zip |
Filesize: |
2.76 KB |
Downloaded: |
396 Time(s) |
|
|