Когда допустимый синтаксис префикса «javascript:»? - PullRequest
13 голосов
/ 18 февраля 2009

Я знаю, что вы можете использовать псевдопротокол javascript: для URL в теге <a>. Тем не менее, я заметил, что Firefox и IE позволят 'javascript:' предшествовать коду JavaScript в теге <script>. Это правильный синтаксис? Меняет ли это правила области видимости?

Примеры: Я видел это много раз:

<a onclick="javascript:alert('hello world!');">Hello World!</a>

Но является ли этот законный / действительный синтаксис и делает ли он что-то особенное:

<script type="text/javascript">
javascript:alert('hello world!');
</script>

Ответы [ 3 ]

15 голосов
/ 18 февраля 2009

За пределами атрибута href (где он является спецификатором протокола), name : просто создает метку (например, которую можно использовать с continue или break).

См .: Вам когда-нибудь нужно указывать javascript: при нажатии?

11 голосов
/ 18 февраля 2009

Вам нужен javascript: «протокол», когда вы хотите поместить JavaScript в атрибут href ссылки.

<!-- does not work -->
<a href="alert('some text');">link</a>

<!-- does work -->
<a href="javascript:alert('some text');">link</a>

<!-- also works -->
<a href="#" onclick="alert('some text');">link</a>

Насколько я знаю (и, пожалуйста, если я ошибаюсь, кто-то поправляет меня) нет разницы в сфере, но есть очень важное различие в this.

<!-- does not work -->
<a href="alert(this.href);">link</a>

<!-- alerts "undefined" -->
<a href="javascript:alert(this.href);">link</a>

<!-- works as expected, alerts "<url>#" -->
<a href="#" onclick="alert(this.href);">link</a>
9 голосов
/ 18 февраля 2009

Стоит учесть, что наши тестировщики всегда будут звонить нам, если мы сделаем что-то вроде


<a href='javascript:openwindowmethod("url");'> stuff </a>

Вместо


<a href='url' onclick='return openwindowmethod(this.href);'> stuff </a>

Первый метод будет работать только в том случае, если вы нажмете на него, но не если вы нажмете на него, щелкнете по нему, или щелкните по нему, или щелкните правой кнопкой мыши и перейдите в новое окно.

Второй метод будет поддерживать все это, а также возможность функционировать так, как он задумал, если пользователь просто щелкнет ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...