2013-10-08 7 views
2

Проверить hereЧто означает javascript: синтаксис функции означает?

javascript:Function("alert('this is ok')")(); 

же, как

new Function("alert('this is ok')")(); 

Что синтаксис называется?

Любые ссылки?

EDIT

К сожалению, моя вина, это всего лишь ярлык, и это не составляет new.

<script> 
    javascript:C("val"); 
    wener:C("val"); 
    function C(v) 
    { 
     this.val = v; 
     alert(window.val) 
    } 
</script> 
<a href="javascript: alert('foo');">click me</a> 

Для <a href="javascript: alert('foo');">click me</a> см URI_scheme (спасибо apsillers) и draft-hoehrmann-javascript-scheme

+1

Нил дал правильный ответ. –

+0

@RakeshJuyal Мой ответ ушел :-( – Neal

ответ

5

Это называется "старый способ использования JavaScript в атрибутах," соответствующий только в HTML.

Вы также можете написать:

poop:Function("alert('ohai')")(); 

Ваш пример просто JavaScript-код, а не атрибут HTML, так что это просто ярлык.

0

Этот подход может использоваться, когда вы хотите выполнить JavaScript в адресной строке браузера. Скопируйте/вставьте javascript:Function("alert('this is ok')")(); в адресную строку браузера и нажмите Enter.

1

Когда вы указываете полностью связанную ссылку, текст слева от двоеточия называется scheme.

<a href="https://example.com/foo">foo</a> 
     ^scheme is "https" 

Браузеры позволяют Вам задать схему javascript в HTML-разметки, в этом случае браузер интерпретирует содержание ссылок справа от двоеточия в качестве сценария будет выполняться, вместо ресурса назначения.

<a href="javascript:alert('I am a script, formatted as a link!')">foo</a> 
      ^scheme is "javascript" 

(Пожалуйста, никогда не сделать это;. Использовать addEventListener("click", function() { ... }) вместо)

Если включить javascript: префикс в контекстах без ссылок, однако, это интерпретируется как JavaScript label. Это совершенно не нужно.

Смежные вопросы