<a> onclick вызывает "не функция" в FF, но IE в порядке - PullRequest
0 голосов
/ 20 мая 2011

Мой код, приведенный ниже, прекрасно работает в IE8, но в FF 3.5 нажатие на ссылку вызывает ошибку, что «start_upload не является функцией». Что здесь происходит? (Конечно, start_upload является допустимой функцией, которая отлично работает в IE)

<div align="left">
  <a href="#" onClick="start_upload();"
    onMouseOver="start_upload.src='/Images/Buttons/Upload-glow.gif'" 
    onMouseOut="start_upload.src='/Images/Buttons/Upload.gif'">
    <img src="/Images/Buttons/Upload.gif" id="start_upload" width="90" height="25" border="0"></a>
  </a>
</div>

Ответы [ 3 ]

3 голосов
/ 20 мая 2011

Это связано с тем, как on.... обрабатываются события или обычно предполагается, что они обрабатываются.Контекстом встроенной функции onclick является элемент <a>, к которому она была присоединена, затем его родитель, затем родитель, и так далее до document и window.Поскольку IE поддерживает ссылки на элементы по идентификатору (а FF должен, но не делает этого), он работает.Тем не менее, в любом случае это правильно - start_upload не является функцией.Это изображение.Что именно вы намереваетесь сделать start_upload();?Вы можете установить его src, и это правильно, но вы не можете вызвать элемент как функцию.

1 голос
/ 20 мая 2011

То, что происходит, заключается в том, что IE нарушает спецификацию ECMAScript.Когда вы делаете start_upload, он разрешает его либо в функцию, либо в элемент в зависимости от того, следует ли за ним () или нет.В Gecko start_upload в этой ситуации разрешается элемент во всех случаях, а затем вы пытаетесь вызвать элемент.

0 голосов
/ 20 мая 2011

Каким-то образом ваш код работает в Firefox также гладко (предполагается, что вы определили функцию start_upload).Вот мой код, который отлично работает.Также видите, вы закрываете </a> два раза (это не должно быть проблемой).

    <body>
    <div align="left">
      <a href="#" onClick="start_upload();"
        onMouseOver="start_upload.src='/Images/Buttons/Upload-glow.gif'" 
        onMouseOut="start_upload.src='/Images/Buttons/Upload.gif'">
 <img src="/Images/Buttons/Upload.gif" id="start_upload" width="90" height="25" border="0">
      </a>
    </div>
    </body>
    </html>
    <script>
    function start_upload()
    {
    alert ("a");
    }
    </script>
...