Отключенный JavaScript
Проблема такая! Есть форма авторизаций, котороя выпадает при нажатий на ссылку,
<script> function showLoginWindow() { document.getElementById("login").style.display="block"; var hs=document.getElementById("hideshow"); hs.innerHTML="Hide"; hs.onclick=hideLoginWindow; } function hideLoginWindow() { document.getElementById("login").style.display="none"; var hs=document.getElementById("hideshow"); hs.innerHTML="Enter"; hs.onclick=showLoginWindow; hs.style.display="block"; } </script> HTML: <body onload="hideLoginWindow()"> <a href="Files/registration.html"> Register</a> <div> <a style="display: none" id="hideshow" href="#" onclick="showLoginWindow()">Enter</a> <div id="login"> <FORM action="" method="POST"> Login: <INPUT type="text" name="lgn"><br> Password: <INPUT type="password" name="pswd"> <br> <INPUT type="submit" name="enter" value="Enter"> </FORM> </div> </div> </body> Мне нужно чтобы если отключен скрипт в браузере, то форма выводилась в окне, проблема- все это делается но при каждом обновлении страницы эта форма видна из-за onLoad() КАК БЫТЬ???? Предложите свой вариант по возможности!!!!!!!!За ранее спасибо!!!!!! |
сделайте ссылку чтобы она вела на страницу с авторизацией, а при window.onload найдите ее и поменяйте href на "javascript: void 0", и прикрутите обработчик, если js выключен, то ссылка будет просто вести на форму с авторизацией.
|
Зачем менять href? <a onclick="...; return false"> не катит?
|
Ну, или если мы за разделение содержания и скриптов, то так:
<a id="123" href="http://www.yandex.ru/">Текст</a> <script> a=document.getElementById("123"); a.onclick=function() { /* ваш код... */ return false; }; </script> |
trikadin,
Вы правы, но лучше уж тогда назначить обработчик на документ, смотреть на чем был клик и если на ссылке то принимать соответствующие меры, я думаю так лучше чем вешать обработчик на каждую ссылку document.onclick = function(e){ var trg = function(event){ return event.target || event.srcElement; }(e || window.event) if(trg.tagName = "A"){ doSomething(trg.href); return false; } } |
А как все будет выглядеть в развернутом виде с js, html, css!!! А то я плохо понял!!!!!!!1
|
Цитата:
|
poorking, можно же проще))
<script type="text/javascript"> document.onclick = function(event) { *!*var target = event ? event.target : window.event.srcElement;*/!* if(target.nodeName == 'A') { alert('Oops!'); } return false; }; </script> <a href="#">click</a> |
monolithed,
trg.tagName = "A" Присваивание поставил нечаянно, прямо тут писал, ошибся. И вопрос, есть ли разница между nodeName и tagName если речь идет об Element (nodeType 1)? Вроде совпадают <script type = "text/javascript"> window.onload = function(){ var html = document.getElementsByTagName("HTML")[0]; alert(html.tagName +"-"+ html.nodeName); } </script> Цитата:
|
Цитата:
<script type = "text/javascript"> var doc = document; alert(doc.tagName +"-"+ doc.nodeName); </script> Цитата:
nodeName имеет все тоже самое, что tagName, плюс некоторые дополнения... Attribute (attr name) | Text (#text ) | Comments (#comment ) | Document (#document) | DocumentFragment (#document-fragment) |
monolithed,
Это я знаю, я говорил Цитата:
|
Цитата:
|
trikadin,
Если ссылка одна то несомненно. А если новостная лента автоподгружающаяся аля фкантакте и их 100? вы каждой напишете свойство onclick? PS тут где то есть похожая тема и я запутался, здесь да, ссылка одна. Виноват, каюс |
Цитата:
Цитата:
Цитата:
|
Вы совсем запутали меня! Ссылка единственная, и сайт у меня с не большим контентом!!!!А фишка про переход на другую страницу прнравилась.Но все же объясните толком как должно все быть!!!
ВОТ МОЙ СКРИПТ: <script> 02 function showLoginWindow() 03 { 04 document.getElementById("login").style.display="block"; 05 var hs=document.getElementById("hideshow"); 06 hs.innerHTML="Hide"; 07 hs.onclick=hideLoginWindow; 08 } 09 function hideLoginWindow() 10 { 11 document.getElementById("login").style.display="none"; 12 var hs=document.getElementById("hideshow"); 13 hs.innerHTML="Enter"; 14 hs.onclick=showLoginWindow; 15 hs.style.display="block"; 16 } 17 </script> HTML: HTML: 01 <body onload="hideLoginWindow()"> 02 <a href="Files/registration.html"> Register</a> 03 <div> 04 05 <a style="display: none" id="hideshow" href="#" onclick="showLoginWindow()">Enter</a> 06 07 <div id="login"> 08 09 <FORM action="" method="POST"> 10 Login: <INPUT type="text" name="lgn"><br> 11 Password: <INPUT type="password" name="pswd"> <br> 12 <INPUT type="submit" name="enter" value="Enter"> 13 </FORM> 14 </div> 15 16 </div> 17 </body> Напишите полностью страницу пж-та !!! |
Вообще, просить написать страницу - наглость. :-E Можно спрашивать. Не понимаешь - уточняй. Не понимаешь совсем - учи матчасть. И не надейся, что в следующий раз тебе ещё раз так помогут.
<html> <head> <style> #login { display: none; } #login.show { display: block; } </style> </head> <body> <a href="Files/registration.html"> Register</a> <div> <a style="display: none" id="hideshow" href="login.html">Enter</a> <!-- login.html - это страница, куда перейдёт пользователь с отключённым javascript --> <div id="login"> <FORM action="" method="POST"> Login: <INPUT type="text" name="lgn"><br> Password: <INPUT type="password" name="pswd"> <br> <INPUT type="submit" name="enter" value="Enter"> </FORM> </div> </div> <script src="hideshow_login.js"></script> </body> </html> Содержимое файла hideshow_login.js: // скрипт должен быть в конце, а не в начале, тогда он будет выполнен после того, как загрузится DOM function showLoginWindow() { document.getElementById("login").className+=" show"; // менять стили через javascript - плохо. Лучше определить отдельный класс var hs=document.getElementById("hideshow"); hs.innerHTML="Hide"; hs.onclick= function(){hideLoginWindow(); return false}; }; function hideLoginWindow() { document.getElementById("login").className.replace(" show", ""); // удаляем класс var hs=document.getElementById("hideshow"); hs.innerHTML="Enter"; hs.onclick= function() {showLoginWindow(); return false} // меняем обработчик на ссылке hs.style.display="block"; // не очень понял, зачем эта строка, поэтому не стал трогать... }; document.getElementById("hideshow").onclick= function() {showLoginWindow(); return false}; // вешаем обработчик на ссылку, return false нужен, чтобы не произошло перехода на другую страницу |
Большое спасибо за разяснение
|
Часовой пояс GMT +3, время: 17:42. |