Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   странное поведение функции с именем search (https://javascript.ru/forum/events/32033-strannoe-povedenie-funkcii-s-imenem-search.html)

veryberry 01.10.2012 11:57

странное поведение функции с именем search
 
По непонятным причинам функция с именем search дает ошибку в случае, когда назначена на событие click именно у ссылок:
Uncaught TypeError: string is not a function
Т.е. воспринимается браузером как строка.
Вот пример кода:
<html>
    <head>
        <script>
            function search()
            {
                alert('test');
            }
        </script>
    </head>
    <body>
        <div onclick="search()">click here</div>
        <a href="javascript:void(0)" onclick="search()">or here</a>
    </body>
</html>

Такое поведение воспроизвелось в chrome, ff, ie. В списке резервных имен search не значится.

ksa 01.10.2012 15:38

Таки измени имя функции, всего делов-то... :)

Цитата:

Сообщение от veryberry
Такое поведение воспроизвелось в chrome, ff, ie.

У меня и в Опере не работает...

veryberry 01.10.2012 16:25

Изменить имя не проблема. Интересна причина.
Оперу забыла упомянуть, в ней тоже проверяла.

cyber 01.10.2012 17:28

хм..
реально странно, потому что так работает
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    
      <div onclick="search_();">click here</div>
       <a href="#" >or here</a>
    
    <script>

      var a = document.getElementsByTagName("a")[0];
      
      a.onclick = search;
      
      function search () {
      
      
      
      alert('ok');
        
        return false;
      
      }

      
   
    </script>

      
    
  </body>
</html>

возможно какой то старый баг, движка..

Aetae 01.10.2012 17:42

Лол. Очевидно же:
<a href="http://ya.ru?123" onclick="alert(search);return false">or here</a>

Код прописанный в онклик выполняется в контексте this, this в данном случае - URI, а URI.search - часть URI содержащая передаваемые параметры.


Часовой пояс GMT +3, время: 19:57.