Сохранение истории браузера с помощью Javascript Bookmarklet - PullRequest
3 голосов
/ 04 декабря 2010

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

Однако я не вижу способа сделать это возможным с помощью букмарклета, который можно запустить на любой веб-странице. Когда вы щелкаете предлагаемую ссылку и затем возвращаетесь назад, открывается исходная страница без Javascript из букмарклета, который обычно выводит список ссылок в верхней части страницы.

Конечно, пользователь может просто снова щелкнуть букмарклет, но было бы неплохо, если бы это не требовалось. Есть ли способ сделать это, кроме перенаправления через веб-сайт, размещенный мной (это ужасное решение IMO)?

Ответы [ 4 ]

2 голосов
/ 13 декабря 2010

Как насчет букмарклета, который составляет html в строку, а затем использует комбинацию window.location и document.write() для его отображения?

var links = "<html><head><title>Suggested links</title></head><body>";
links += "<p><a href='http://example.com/'>Example Suggested Link</a></p>";
links += "</body></html>";
window.location = 'javascript:document.write("' + links + '");' ;

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

Вот пример: http://jsbin.com/ebuko4 - он работает для меня в Firefox, но я не проверял его в других местах ...

код:

<html>
  <head>
    <title>JS Bin Sample bookmarklet</title>
  </head>
  <body>
    <p><a href='javascript:(function(){ var l = "<html><head><title>Does this bookmarklet work?</title></head><body><p>"+ "<a href=\"http://example.com/\">Suggested link: Example.com</a></p>" + "<p><a href=\"http://example.net/\">Suggested link: Example.net</a></p>" + "</bo" + "dy></html>"; window.location = "javascript:document.write(%27" + l + "%27);"; })()'>Sample Bookmarklet - drag me to your toolbar</a></p>
  </body>
</html>
1 голос
/ 07 декабря 2010

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

Если вы настаиваете на этой функциональности, вам вместо этого необходимо разработать расширение для браузера. Это, например, позволит вам добавить новый постоянный фрейм в окно браузера, в котором вы можете отобразить предложенные ссылки. Mozilla / Firefox довольно прост для разработки, так как он основан на javascript и XUL (язык разметки GUI Mozilla). Здесь много учебников и документов: https://developer.mozilla.org/en/extensions

Вы также можете разрабатывать расширения для IE, хотя у меня нет такого опыта. Ответы на этот вопрос Как вы разрабатываете плагин для IE? может помочь вам начать работу.

Редактировать: Я подумал о возможном обходном пути: ваш букмарклет может создать новую страницу в текущем окне, с предлагаемыми ссылками в контейнере, и исходную страницу, отображаемую в iframe. Нажатие на любую из предложенных ссылок приведет к обновлению iframe. Не пытаясь на самом деле это сделать, не уверены, какие практические проблемы могут возникнуть (например, некоторые сайты, например SO, не будут отображаться в iframe, а некоторые ссылки будут иметь target = "_ blank" и открываться в новом окне), или этот формат тебе бы хотелось.

0 голосов
/ 20 декабря 2010

Если вы можете перенести данные вперед, когда пользователь переходит по одной из предложенных ссылок (например, добавить #info = ... к URL-адресу ссылки), тогда пользователь может вернуть список ссылок, снова активировав букмарклет,без необходимости возвращаться в свой браузер.

Если букмарклет находится на панели инструментов, то это будет операция в один клик.Но может возникнуть одна новая проблема: как получить свежие результаты, когда букмарклет пытается показать вам результаты с предыдущей страницы!

0 голосов
/ 20 декабря 2010

Если браузер изменит страницу, ваш букмарклет потеряет контроль. Таким образом, одно решение не состоит в том, чтобы изменить страницу.

Вы можете открыть предлагаемые ссылки во фрейме или в фрейме. Вы можете заставить фрейм заполнять окно, если хотите, если есть возможность снова просмотреть список предлагаемых ссылок.

Обратите внимание, что это не будет работать в стеке! У них прорыв фреймов гррр.

Вот несколько похожий пример: http://hwi.ath.cx/joeys_bookmarklets.html#splitpreview

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