Добавьте закладку, которая представляет собой только javascript, а не URL-адрес

Я думаю, что причина, по которой я не могу этого сделать, заключается в том, что это может быть огромная дыра в безопасности, но вот ...

Я хочу, чтобы в моем браузере была закладка (желательно FF3), которая представляет собой всего лишь фрагмент кода javascript. Он просто построит URL-адрес на основе текущей даты, а затем выполнит window.location = для этого URL-адреса.

Я знаю, что могу создать страницу и сохранить ее на моем локальном компьютере и просто так на нее ссылаться, но мне просто интересно, можно ли обойти этот шаг и на самом деле «местоположение» закладки действительно будет просто javascript. Я мог бы поклясться, что это было возможно много лет назад, но сейчас я не могу найти ничего, что говорило бы мне об этом.

Ответов (5)

Решение

Вам нужен букмарклет , который легко создать и который должен работать в большинстве основных браузеров.

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

javascript: window.location = 'http: //www.google.com/search? q =' + Date ()

чтобы получить букмарклет, который ищет в Google текущую дату.

Закладка Google

javascript:(function(){var%20a=window,b=document,c=encodeURIComponent,d=a.open("http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk="+c(b.location)+"&title="+c(b.title),"bkmk_popup","left="+((a.screenX||a.screenLeft)+10)+",top="+((a.screenY||a.screenTop)+10)+",height=420px,width=550px,resizable=1,alwaysRaised=1");a.setTimeout(function(){d.focus()},300)})();

Ну, я только что создал закладку в FF3, вернулся, обновил ее и добавил следующий тест:

javascript:alert('Wacky%20test%20yo');

Низкий и вот, после того, как я сохранил и загрузил, я смог получить свое предупреждение.

Я уверен, что вы можете придумать что-то подобное для своих нужд.

Одна небольшая загвоздка. IE может обрабатывать только 508- символьный URL-адрес в этом формате. Если вы сохраните его в IE с URL-адресом длиннее, чем этот, он будет усечен без предупреждения и, следовательно, завершится ошибкой.

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

Это не так приятно / портативно, но это единственный обходной путь.

Стоит отметить, что вы также можете поместить это в оболочку функции. Имранамаджид прекрасно проиллюстрировал это для нас ... но, видимо, я слишком новичок на сайте, чтобы размещать его сообщение. :П

так для ясности:

javascript:(function(){
  location.href = location.href + "#";
})();

(возврат каретки не повлиял на производительность в Chrome и IE)