JavaScript - Проблема с символами ESC в bookmarklets

У меня есть хорошая часть JavaScript

<script type="text/javascript"><!--
var d = new Date();
d.setTime(d.getTime()-86400*1000);
window.location = "https://mail.google.com/mail/?shva=1#search/in%3Ainbox+before%3A"+(d.getYear()+1900)+"%2F"+(d.getMonth()+1)+"%2F"+d.getDate();
//-->
</script>

Это работает полностью удовлетворительно, когда я посещаю .html файл, в котором я храню JavaScript.

Однако я хотел бы получить тот же эффект от использования bookmarklet - однако, когда я поместил

javascript:var%20d%20=%20new%20Date();%20d.setTime(d.getTime()-86400*1000);%20window.location%20=%20"https://mail.google.com/mail/?shva=1#search/in%3Ainbox+before%3A"+(d.getYear()+1900)+"%2F"+(d.getMonth()+1)+"%2F"+d.getDate();

в мою закладку я взят к re:2010/4/20, а не re%3A2010%2F4%2F20

Я предполагаю, что существует некоторая проблема с символами ESC или в системе установки закладки или в JavaScript, но я не добираюсь нигде - кто-либо хочет предоставить руку?

Joe

1
задан Joe 21 April 2010 в 18:03
поделиться

2 ответа

Я бы попытался обернуть весь этот фрагмент кода функцией, чтобы ваш букмарклет (без экранирования) выглядел так:

(function() {
    var d = new Date();
    d.setTime(d.getTime()-86400*1000);
    window.location = 
      "https://mail.google.com/mail/?shva=1#search/in%3Ainbox+before%3A" + 
      d.getFullYear()+"%2F"+(d.getMonth()+1) + "%2F" + d.getDate();
})();

Но это только я. Что еще более важно, эти экранированные символы нужно будет экранировать дважды, когда вы превращаете их в форму букмарклета.

javascript:%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20d%20%3D%20new%20Date%28%29%3B%0A%20%20%20%20%20%20%20%20d.setTime%28d.getTime%28%29-86400*1000%29%3B%0A%20%20%20%20%20%20%20%20window.location%20%3D%20%0A%20%20%20%20%20%20%20%20%20%20%22https%3A//mail.google.com/mail/%3Fshva%3D1%23search/in%253Ainbox+before%253A%22%20+%20%0A%20%20%20%20%20%20%20%20%20%20d.getFullYear%28%29+%22%252F%22+%28d.getMonth%28%29+1%29%20+%20%22%252F%22%20+%20d.getDate%28%29%3B%0A%20%20%20%20%7D%29%28%29%3B

Также есть функция для экземпляров Date, называемая "getFullYear".

1
ответ дан 3 September 2019 в 01:07
поделиться

Почему% 20 - ни один из моих букмарклетов никогда не нуждался в этом

1
ответ дан 3 September 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: