2015-12-09 3 views
1

Как показано в коде ниже,Код букмарклета всегда записывается как значение атрибута href?

<div id="content"> 
      Here is my <a href="javascript:(function(){ 
              _my_script=document.createElement('SCRIPT');_my_script.type='text/javascript'; 
              _my_script.src='file:///D:/Access/bookmark/bmlet.js'; 
              document.getElementsByTagName('head')[0].appendChild(_my_script);})();"> 
           bookmarklet 
         </a> 
     </div> 

ли закладка код всегда пишется как значение href атрибут тега привязки?

Если да, то это не эквивалентно написанию обратного вызова JavaScript для события onClick?

+3

Что вы подразумеваете под закладкой, у вас есть якорь, который делает причудливый скрипт вставлять в голову? – adeneo

+0

@adeneo Он имеет в виду букмарклет. – Barmar

+0

https://en.wikipedia.org/wiki/Bookmarklet – overexchange

ответ

1

Если вы нажмете на якорь, то якорь с URI javascript: в основном похож на атрибут onclick с тем же кодом.

Но буклеты не предназначены для непосредственного использования. Пользователь должен щелкнуть по нему правой кнопкой мыши и сохранить URI в своих закладках. Это работает, только если код находится в атрибуте href.

+0

С первым взглядом в качестве новичка значение 'href' attr выглядело как объектная буквальная запись (' javascript: something'). – overexchange

+0

Объектные литералы окружены фигурными фигурными скобками. – Barmar

+1

атрибуты 'href' - это URI, поэтому' javascript: '- это схема, аналогичная' http: 'и' mailto: '. – Barmar

0

букмарклет является javascript: схема URL, который сохраняется в закладки браузера, поэтому он может быть запущен на любой странице пользователь смотрит на доступ к нему из меню закладок.

Чтобы сохранить его в закладках, его необходимо привязать к ссылке, которую пользователь может щелкнуть правой кнопкой мыши и выбрать «Добавить в закладки» или перетащить на панель инструментов закладок.

Он не будет работать в атрибуте onclick (или обработчике событий, связанным с JS), потому что это URL-адрес, который сохраняется в закладке.

+0

Я не могу написать 'javascript: alert ('Hello')' адрес схемы на адресной строке в отличие от схемы http: // google.com. URL – overexchange

+0

@overexchange - Современные браузеры блокируют его оттуда из-за его использования в атаках социальной инженерии. – Quentin

+0

Любой пример, что сработало? – overexchange