Главная > Программирование > Web-программирование > |
FAQ по языку JavaScript |
Секция 2 из 2 - Предыдущая - Следующая
<option>IBM <option>Microsoft <option>ПРоктер и гембл </select> </td> <td> Товар:<br> <select name="s2" size=7 width=200> <script> for(i=0; i<tovar[1].length; i++) document.writeln('<option>'+tovar[1][i]); </script> </select> </td></tr> </table> </form> </body> </html> -+----------------------------------------------- Работает как минимум в MIE5 и Нетскапе 4.08. Хотя МИЕ как-то странно реагирует на изменение значений, передергивает все поле выбора. Может, пофиксить и можно, не разбирался. 2. можно ли вызывать яваскpипт помещенный в один файлик (фpейм) из дpугих фpеймов... если можно, то как? >> From : Artem Babadzhanyants 2:5030/922 Sat 13 Nov 99 18:23 Текст скрипта пишешь в отдельном файле, а на страничке пишешь: <HTML> <SCRIPT LANGUAGE="JavaScript" SRC="b5bbs.js"> </SCRIPT> <SCRIPT LANGUAGE="JavaScript" SRC="link.js"> </SCRIPT> </HTML> т.е мои скрипты находятся в файлах b5bbs.js и link.js 3. Есть 2 фpейма баннеp и основной, надо зделать так чтобы пpи клике на кнопкy(pисyнок,ссылкy)в вpейме с банеpом фpейм закpылся и остался только основной. Помогите плиз.. >> From : Alexander Hritonenkov 2:5030/978.33 Sat 04 Mar >> 00 15:05 <A HREF="..." TARGET="_parent">...</A> или <A HREF="..." TARGET="_top">...</A> 4. Вот так получаются ЧАСЫ >> From : Anton Agapov 2:5030/854.22 Mon 27 Mar >> 00 15:48 <FORM NAME="clock"> <INPUT NAME="face" TYPE="TEXT" VALUE="hh:mm:ss" SIZE=6> </FORM> <SCRIPT LANGUAGE="JavaScript"> <!-- updateClock(); function updateClock() { var time = new Date(); var hours = time.getHours(); var minutes = time.getMinutes(); var seconds = time.getSeconds(); document.clock.face.value = ((hours < 10) ? '0' + hours : hours) + ':' + ((minutes < 10) ? '0' + minutes : minutes) + ':' + ((seconds < 10) ? '0' + seconds : seconds); setTimeout("updateClock()",1000); } //--> </SCRIPT> <p> 5.Как сделать сабж, чтобы после нажатия на кнопку "Submit" поля формы проверялись ява-скриптом, а потом только, если все формы заполнены так так надо, данные передавались серверу ? >> From : Vitaly Vasilchuk 2:5020/400 Fri 07 Apr >> 00 15:02 В html'е, в форме, кнопка Submit, должна быть описана следующим образом -+------------------------------- <input type="button" value="Отправить" onclick="ConfirmBox(this.form, 'Вы действительно хотите отправить запрос?')"> -+------------------------------- а вот скрипт -+------------------------------- function ConfirmBox(f, message) { // проверка поля Sum if (f.Sum.value=="0") { // выводим сообщение об ошибке alert('Необходимо выбрать одну из задач.'); // возвращаем фокус на форме в это место f.cb_MU.focus(); return false; } // вывод запроса if (confirm(message)) { // если пользовать топчет "Yes" - отправляем f.submit(); <-- сам трюк return true; } else return false; } 6. > Есть проблема: нужно чтобы один слой (div или layer) показывался над > другим слоем с формой. Всё бы ничего, но <select> на нижнем слое всё > время вылазит поверх верхнего слоя. From: "Serge Neroznaque" <serge@cookietown.net> 1. Про windowed controls (из разных сообщений... поэтому малость хаотично) Видимый OBJECT, а также SELECT и IFRAME -- это т. н. windowed controls, они не совсем полноценные участники документа. Они окна внутри окна браузера и поэтому будут выводиться поверх других элементов. Изменяя zIndex меняется только положение таких элементов относительно друг друга. Для всех остальных -- они всегда on top. Их можно прятать меняя visibility, но это не совсем то. В IE4 windowed controls не наследуют значение display и visibility и остаются видимыми. Поэтому в IE4 нужно стараться избегать приемов с наложениями слоев с windowed controls. Начиная с версии эксплорера 5.5 -- IFRAME стал windowless и таким образом поддерживает CSS атрибут z-index. А вот в случае Flash это возможно. Но только благодаря его разработчикам. Для эксплорера: <OBJECT> <PARAM name="wmode" value="opaque"> </OBJECT> Для остальных: <EMBED wmode="opaque"></EMBED> Надейсь, понятно в чем именно фича, и что остальные атрибуты опущены. 7.Кто-нибудь знает, как проиграть wav файл в Internet Explorere? (требуется звук при наведении мыши на объект) >> From : Raidillon Eaurouge 2:5020/400 Sun 01 Oct 00 02:00 Проверил в win98, IE5.0 (5.00.2614.3500)... Работает! <sample runsInIE5_0="yes"> <HTML> <BODY> <SCRIPT LANGUAGE="JavaScript"> <!-- var strOver = "1.wav"; var strClick = "2.wav"; var a = new Array("never", "say", "die"); for (var i = 0; i < a.length; i++) document.writeln('<p><a href="#"' + ' onmouseover="soundIt(false)"' + ' onclick="soundIt(true)">' + a[i] + '</a></p>'); function soundIt(cause) { sounder.src = (cause ? strClick : strOver); } //--> </SCRIPT> <bgsound id="sounder"/> </BODY> </HTML> </sample> >>From: Andrew Rousev Из ClientGuide JS1.3: *JavaScript Methods for Controlling LiveAudio* LiveAudio provides the following major JavaScript controlling methods. For these methods to be available to JavaScript (and the web page), you must embed a LiveAudio console (any console will do, it can even be hidden) somewhere on your page. play({loop[TRUE, FALSE or an INT]}, '{url_to_sound}') pause() stop() StopAll() start_time({number of seconds}) end_time({number of seconds}) setvol({percentage number - without "%" sign}) fade_to({volume percent to fade to, without the "%"}) fade_from_to({volume % start fade}, {volume % end fade}) start_at_beginning() stop_at_end() The following JavaScript state indication methods do not control the LiveAudio plug-in, but they give you information about the current state of the plug-in: IsReady IsPlaying IsPaused GetVolume -+------- Using the LiveAudio LiveConnect Methods One example of using JavaScript to control a LiveAudio plug-in is to have JavaScript play a sound. In the following example, all of the HTML is needed to make the plug-in play a sound. <HTML><BODY> <EMBED SRC="sound1.wav" HIDDEN=TRUE> <A HREF="javascript:document.embeds[0].play(false)">Play the sound now!</A> </BODY></HTML> FAQ V. Dynamic HTML, LAYERs, DIVs, DOM, CSS 1. Хотелось бы не забивать тэги JavaScript-овскими onMouseOver="..." и т.п., а просто цеплять CSS к документу и все. From "Raidillon Eaurouge" <nero@iptelecom.net.ua> wrote in message <style> .umm { behavior: url('umm.htc') } </style> <component> <implements> <attach event="onmouseover" onevent="over()" /> <attach event="onmouseout" onevent="out()" /> <attach event="onclick" onevent="clika()" /> </implements> </component> > А если уже прописана куча частных случаев onmouseover() и onclick(), но хочется > ко всем сразу добавить и onfocus(), будет ли работать такая конструкция: > <component> > <implements> > <attach event="onfocus" onevent="this.blur()" /> > </implements> Будет работать, но в компонентах нужно использовать не "this", а "element" для обращения к своим свойствам и методам -- element.blur(). почитать можно в MSDN - DHTML Behaviors in Internet Explorer 5 2.RR> Надеюсь, что не ошибся эхой. Как создать пунктик "Сделать эту 2.RR> страницу RR> стартовой"? From : Andrey Kubakh <a href="#" onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http:// www.твой_урл.ru/');">Сделать стартовой страницей</a> From: Nikolay Levashko > Задача в двух вариантах: > Вопрос: как переписать для вар.1 кусок текста, а для вар.2 текст в > строке таблицы при нажатии соотв. ссылки. Надо для NN!! > Для IE все вроде просто: для вар.2 использовать innerHTML, а для вар.1 > тоже есть какая-то фишка поиска и замены фрагмента текста. А вот как с > NN быть? Я делал это след образом: Помещаешь все эти тексты в слои (<div>), каждый в свой слой. Чтобы работало и там и там, пишешь position:absolute. Чтобы вставлять текст пишешь: для IE: document.имяслоя.innerHTML=... для NN: document.имяслоя.open(); document.имяслоя.write(...); document.имяслоя.close(); 3. > Подскажите, пожалуйста, как организовать на эхотаге > чтение html-файла и вывод его содержимого в > составе текущего документа? From Raidillon Eaurouge aka Serge Neroznaque: Решение #1. Самое простое. Когда-то уже постил его в эту эху. Работает только в ИЕ5.0 и выше. <HTML xmlns:dl> <HEAD> <SCRIPT LANGUAGE="JScript"> function commenceDownload(strURL) { daGiver.startDownload(strURL, onDownloadComplete) } function onDownloadComplete(contents) { tgt.innerHTML = contents; } </SCRIPT> </HEAD> <BODY> <dl:datagiver id="daGiver" style="behavior:url(#default#download)"/> <div id="tgt"></div> <input type="button" value="Go" onclick="commenceDownload('some_page.htm')"> </BODY> </HTML> Здесь используется функциональность встроенного HTML компонента "download". Выбор параметра для функции commenceDownload -- на ваше усмотрение. То, куда записывается contents в обработчике onDownloadComplete, опять же -- куда вам нужно. Вот и все. Решение #2. Использование возможностей браузера по работе с XML. Работает только в ИЕ5.0 и выше. Но может требоваться также серверная функциональность, если данные -- динамические. Например, просмотр какого-либо списка определенными порциями без перезагрузки страницы. Отправка данных из формы без перезагрузки страницы (только если вы файл не отправляете) и другие задачи для отправки/получения без перезагрузки страницы. Решение #3. Построение собственной системы RPC. Опять же на базе XML и IE5+. Без серверной части не обойтись. Решение #4. Использование MS Remote Scripting. Работает во всех браузерах, в которых поддерживается Java. Апплет выступает как клиентский прокси для удаленного вызова методов на сервере. Необходима серверная часть, да еще на базе IIS4/ASP. Документацию по Remote Scripting см. http://msdn.microsoft.com/scripting/remotescripting/rsdocs.htm Оттуда же можно загрузить компоненты для работы с этой технологией. Решение #5. Написать собственный Java-апплет, который будет либо загружать ресурсы, либо вызывать скрипты/методы на сервере. 4. Behavior для смены цвета ячеек > Как скpиптом делать сабж? Смысл в том, чтобы > именно щелчком по ячейке в ней менялся стиль(цвет или pазмеp фонта и > пp.), > а в остальных ячейках стили возвpащали пеpвоначальное значение. > Щелчок по дpугой ячейке - и все по-новому. From: "Serge Neroznaque" <serge@cookietown.net> 1) Написать attached behavior и поместить его в файл по имени kliker.htc <component> <implements> <attach event="ondocumentready" onevent="initer()" /> <attach event="onfocus" onevent="hilite()" /> <attach event="onblur" onevent="fade()" /> </implements> <SCRIPT LANGUAGE="JScript"> function initer() { element.tabIndex = 0; fade(); } function hilite() { element.style.backgroundColor = "red"; } function fade() { element.style.backgroundColor = "silver"; } </SCRIPT> </component> 2) Создать HTML файл создать стиль и нарисовать таблицу в нем <style> #kliker TD { behavior: url("kliker.htc") } </style> <table border="1" width="100%" id="kliker"> <tr> <td> </td> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> </table> >Как на javascript реализовать оператор из vbscript: >on error resume next From: "Dmitry Chekunov" <nika@dol.ru> Возможно -- так: window.onerror=null; From: "Vladimir Romanovich" <teo@on.ru> try { /* здесь программа */ } catch(e) { /* здесь обработка ошибок */ } //---------------------- From: myr@south.net.ru (Raoul & Natalia Nakhmanson-Kulish) >7.12. Есть ли в JS функция, которая бы брала сценарий из внешнего файла? >Как грамотно пользоваться внешними скриптами? >Почему нельзя использовать внешние скрипты вместо SSI для вывода текста? Внешние скрипты имеют кучу преимуществ перед внутренними - они кэшируются в бродилке, позволяют писать библиотеки стандартных функций для использования на нескольких страничках, не загромождают код HTML. Но есть у них и недостатки - они плохо поддерживаются старыми бродилками, кроме того, при вызове функции из внешнего скрипта мы не можем быть уверены в том, что этот скрипт загрузился - в противном случае будет выдано сообщение об ошибке. Особенно плачевно заканчивается использование лентяями внешних скриптов вместо SSI для вывода информации в документ (document.write). Поэтому грамотный метод использования внешних скриптов такой. В <head> документа, выше всех остальных внешних и внутренних скриптов пишется: <script language="JavaScript" type="text/javascript"><!-- var jsLoaded=false; //--></script> Внешний скрипт вставляется так: <script language="JavaScript1.2" src="myscript.js" type="text/javascript"></script> Обратите внимание на параметр language - там стоит JavaScript1.2 вместо простого JavaScript для того, чтобы старые бродилки не пытались загрузить то, что они все равно не поймут. В файле myscript.js последней строчкой должно стоять: jsLoaded=true; Затем при необходимости использования функций из внешнего скрипта мы поступаем так: а) В блоке JavaScript: <script language="JavaScript"><!-- ..... // тили-тили // трали-вали if (jsLoaded) { // это дело мне по силе // откажусь теперь едва ли } else { // это мы не проходили // это нам не задавали } ..... //--></script> б) При вызове функции по событию в теге HTML: <a href="page.html" onClick="return (jsLoaded)?externalFunction(...):true;"> //-------------- From: "Vladimir Romanovich" <teo@on.ru> > Хочу сделать, при нажатии пользователем F1 выскакивало бы окно помощи > просто новое окно в котором бы была какая-то справка). > Для этого использую событие сабж. > Но вот только при нажатии F1 выскакивает еще и help встроенный в IE. > Можно как-нибудь JavaScript-ом сделать чтобы эта microsoft-овская помощь не > выскакивала. <BODY onhelp="window.open('help.htm','help'); return false;"> Нужно указать, что системный хелп уже не нужен. //---------------- From: "Peter B. Shalimoff" <vshalim@home.ru> alexander beckmansurov <alexander.beckmansurov@f53.n5061.z2.fidonet.org> пишет: > еще вопрос: как в JS форматировать вывод: вместо 5.8 выводить 5.80 ? function strprep(src, prepChr, cnt, append) /* * "Выравнивает" строку символом. * IN: src - исходная строка. * prepChr - символ-выравниватель. * cnt - до какой длины выровнять. * append - если true, то символ добавляется * в конец строки, иначе - в начало. * OUT: выровненная строка. */ { var q = src.length; if ( q >= cnt ) return src; for (var i=q; i<cnt; i++) { if ( append ) src += prepChr; else src = prepChr + src; } return src; } function round (numb, precis) /* * Округляет число. * IN: numb - число. * precis - кол-во знаков после запятой. * OUT: округленное число в виде строки. */ { // проверки всякие. eval() делается для того, // чтобы можно было использовать не просто числа, // а какие-нить numeric expressions в кач-ве аргументов // функции, например: // var e = round("3+5/367"); // var z = round("0xdeadbeef"); precis = parseInt(eval(precis)); if ( isNaN(precis) || precis<0 ) precis = 2; numb = parseFloat(eval(numb)); if ( isNaN(numb) ) { return "0"+(precis>0?"."+strprep("0","0",precis,true):""); } var numb_int = parseInt(numb); // целая часть. var numb_fract = numb - numb_int; // дробная часть. // взяли нужное кол-во знаков в дробной части и округлили. var fract_rnd = Math.round(numb_fract * Math.pow(10, precis)); // на случай переноса в старший разряд. numb_int = parseInt(numb_int + fract_rnd/Math.pow(10, precis)); if ( numb_int > parseInt(numb) ) fract_rnd = 0; var rc = numb_int + (precis>0 ? "."+strprep(""+Math.abs(fract_rnd),"0",precis,true) : ""); // если надо получить число в виде числа :), то предыдущие // 3 строчки меняем на: // var rc = numb_int + fract_rnd/Math.pow(10, precis); return rc; } все там работает, проверено раз дцать еще несколько лет назад. Был оставлен один "баг" в качестве Вашего "домашнего задания", но, судя по этому письму, мне придется самому его исправлять. :) Так вот, в функции round есть такое: // на случай переноса в старший разряд. numb_int = parseInt(numb_int + fract_rnd/Math.pow(10, precis)); if ( numb_int > parseInt(numb) ) fract_rnd = 0; -+--------------^ Так вот, оператор > ("больше") надо заменить на != ("не равно"), чтобы правильно работало и с отрицательными числами. //-------------------------- From : Alexander Umnikov 2:5026/49.62 Д> В документе пишу команду: Д> window.close(). Д> Появляется запрос на подтверждение закрытия окна. Д> Как сделать, чтобы окно закрывалось сразу без подтверждения? Если окно открыто скриптом, то оно скриптом закрывается без окошек, иначе - облом. //----------------------------- From: "Peter B. Shalimoff" <vshalim@home.ru> "Stas Devyatovskiy" <Stas.Devyatovskiy@p17.f43.n5004.z2.fidonet.org> wrote: > Как можно отобpазить image в стиле disabled? (Блекло-сеpые цвета) > <IMG disabled> только лишь блокиpует события, вpоде onclick, а каpтинку > отобpажает в исходном ваpианте. Я так полагаю, нужно использовать > опpеделенный фильтp для этого, но не знаю какой. <script> function embossImage(img, clr) { if ( null == clr ) clr = "THREEDSHADOW"; img.style.filter="chroma(color=white) mask(color="+clr+") mask(color="+clr+") dropshadow(color=THREEDHIGHLIGHT,offx=1,offy=1)"; } </script> <img src="sample.gif" onmouseover="javascript:embossImage(this);" //---------------------- From: "Peter B. Shalimoff" <vshalim@home.ru> "Roman Kondrashin" <rk@office.infodesign.ru> wrote: > Где-то, не помню точно где, пролетала мессага, как сделать, чтобы в NN > при > ошибке скрипта вылетало окошко. Что-то там нужно было поправить или добавить > в файле установок. Достало уже набирать javascript:... Поделитесь, кто > знает. можно вставить в код такое: window.onerror = new Function("setTimeout('location=\\'javascript:\\';', 100);"); Итак, что же всё-таки имел в виду я, когда задавал вопрос. В Netscape\users\...\prefs в prefs.js добавить строчку user_pref("javascript.console.open_on_error", false); true вместо false что приведет к автоматическому открытию окна при обнаружении ошибки ПРИ ВЫПОЛНЕНИИ JavaScript //--------------------- From : Victor Prylipko 2:4635/4.1 25 Nov 01 01:48:48 Subj : Re: данные из фоpмы записать в файл YP> Собственно хотелось бы yзнать как pеализовать сабж. И можно ли читать YP> из файла. Заpанее пpемного благодаpен. MSIE это умеет: function Save(FileName, Data) { - var fso = new ActiveXObject("Scripting.FileSystemObject"); - File = fso.CreateTextFile(FileName, true); - File.WriteLine(Data); - File.Close(); - } //------------- From : Denis Balashov 2:5010/103.12 26 Nov 01 18:46:58 Subj : XML and browsers SD> У IE5.0 и выше есть мощные сpедства pаботы с XML, SD> включающие в себя подгpузку удаленных XML-документов и автоматический SD> pазбоp на ноды, с пpедоставлением возможности ходить по деpеву этих SD> нод. парсер для XML можно установить и отдельно. Если opera, mozilla и netscape умеют jscript - будут уметь и работать с XML. Чем это отличается от создания любого другого ActiveX-объекта? var source = new ActiveXObject("MSXML2.DOMDocument.3.0"); source.async = false; source.load(sourceFile); //---------------------------- From: "Vladimir Romanovich" <teo@on.ru> > Нужно прочитать код JavaScript, подгружаемый отдельно с сервера с > помощью: > <script language="javascript" > src="http://www.server.com/javascript.js"></script> > > Есть ли способ узнать этот код? Если есть чем читать (мозги), то можно :) А если скриптом, то юзай activex "WinHttp.WinHttpRequest.5" (предварительно скачай с мелкософта): var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5"); WinHttpReq.open("POST", http://www.server.com/javascript.js", false); WinHttpReq.send(); alert(WinHttpReq.responseText); Ты не рассказал о твоей задаче, так что ответ таков, какой вопрос. //--------------- From: myr@south.net.ru (Raoul & Natalia Nakhmanson-Kulish) Allin punchaw qampaq, Gennady Gulevsky! В твоем письме от Mon, 21 Jan 2002 06:22:01 +0000 (UTC) нам удалось вычитать: >И я могу извлечь любую ссылку из загруженного документа, >Если же я загружаю в IFRAME документ, адрес которого имеет вид что-то >типа >http://someserver.com/dir/sample.php?t=12345&p=12345, >то оператор typeof(frames[id_iframe].document) выдает тип "unknown", >и соответственно, я не могу извлечь из документа никакой ссылки. Это сделано из соображений безопасности. Обойти - нельзя никак. //-------------------- From : Evgenij Koronin 2:5030/175.1006 11 Dec 01 10:15:34 VR> a.length (не работает с hash массивами, там надо перебором for(var i VR> in a) {...}) Потому что нету в JS понятия хэш-массива, а есть объекты с набором свойств, адресация к которым разрешена как через точку, так и по имени. var o = new Object(); o.a = 1; o["b"] = 2; o.b дает 2, o["a"] дает 1 //------------------ From: "Peter B. Shalimoff" <vshalim@home.ru> > Вот эта вишка меняет только пеpвую букву: > msgn=msgn.replace(/a/,'b'); > Как сделать, чтобы меняло все? msgn = msgn.replace(/a/g, 'b'); From : Paul Kityan 2:5020/2096.7 var a='hello'; while (a.indexOf('l')!=-1) { a=a.replace('l','L'); } //--------------------- From: "Тимошенко Роман" <etltim@energy.tagmet.ru> Как сделать невидимым курсор? Как отслеживать выход курсора за границы окна? //------------------------- From: myr@south.net.ru (Raoul & Natalia Nakhmanson-Kulish) >Скажите, какие методы бывают у объекта window.external? В Client-Side >JavaScript Guide ничего не нашёл, а пока знаю только addFavorite(). MSDN /workshop/author/dhtml/reference/objects/external.htm external Object Allows access to an additional object model provided by host applications of the Microsoft- Internet Explorer browser components. Remarks In a hosting scenario, the object model is defined by the application hosting the Internet Explorer components (refer to the hosting application for documentation). For more information about how to implement extensions to the Dynamic HTML (DHTML) object model, see Browser Overview. This object is not supported in HTML Applications. This object is available in script as of Microsoft- Internet Explorer 4.0. Members AddChannel Presents a dialog box that allows the user to either add the channel specified, or change the channel URL if it is already installed. AddDesktopComponent Adds a Web site or image to the Microsoft- Active DesktopE. AddFavorite Prompts the user with a dialog box to add the specified URL to the Favorites list. AutoCompleteSaveForm Saves the specified form in the AutoComplete data store. AutoScan Attempts to connect to a Web server by passing the specified query through completion templates. ImportExportFavorites Imports or exports Favorites information. IsSubscribed Returns whether the client subscribes to the given channel. menuArguments Returns the window object where the context menu item was executed. NavigateAndFind Opens a Web page, and highlights a specific string. ShowBrowserUI Opens the specified browser dialog box. \\--------------------------------------------- From: "Denis Ponomarev" <oz@romsat.kiev.ua> Pardon. xxx.style.cursor="Arrow"
Секция 2 из 2 - Предыдущая - Следующая
Вернуться в раздел "Web-программирование" - Обсудить эту статью на Форуме |
Главная - Поиск по сайту - О проекте - Форум - Обратная связь |