Pobierz adres URL i zapisz go | rozszerzenie Chrome

W zasadzie na moim oknie (po kliknięciu ikony) powinno się otworzyć i pokazać adres URL karty, a obok niego chcę, aby powiedzieć "Zapisz", zapisze go do localStorage, i być wyświetlane poniżej w obszarze zapisanych linków.

Tak:

Alt text http://i42.tinypic.com/dma7x5.png

Coś jak zakładki:)

Author: Kara, 2010-05-09

3 answers

Jeśli chcesz zrobić coś takiego, łatwo to zrobić za pomocą interfejsu API rozszerzeń Chrome. Obszary, których należy szukać to:

Teraz pierwszym krokiem jest utworzenie wyskakującego okienka.plik html i pamiętaj, że jest przejściowy, to znaczy, że żyje tylko po kliknięciu akcji przeglądarki, a następnie umiera, jeśli zakończy się (zamyka). Co próbuję powiedzieć, jeśli masz dużo obliczeń i chcesz, aby stało się to w tle i stało się nawet jeśli wyskakujące okienko jest zamknięte, przenieś wszystko na stronę w tle . A w wyskakującym okienku możesz łatwo uzyskać dostęp do strony w tle za pomocą chrome.przedłużenie.getBackgroundPage ()

Wewnątrz wyskakującego okienka.html, musisz uzyskać adres URL bieżącej karty, aby to zrobić, API Karty ma funkcję " getSelected ", która pozwala uzyskać kartę obiekt dla wybranej zakładki.

Więc coś takiego:

Popup.html

<html>
<body>
<p id="currentLink">Loading ...</p>
<hr />
<ul id="savedLinks"></ul>
<script type="text/javascript" src="popup.js"></script>
</body>
</html>

Popup.js

chrome.tabs.getSelected(null, function(tab) {
    document.getElementById('currentLink').innerHTML = tab.url;
});

Powodem, dla którego nie można umieścić kodu JavaScript w pliku HTML, jest ograniczenie Chrome do ochrony użytkowników przed atakami JavaScript:

Skrypty Inline i procedury obsługi zdarzeń wyłączone

Teraz to pozwoli Ci pokazać adres Url w wyskakującym okienku dla bieżącej strony jako działanie przeglądarki. Następnym krokiem jest użycie proste funkcje HTML5, takie jak localStorage, lub Webdatabase (moim zdaniem, że będzie lepiej). Aby zapisać zapisane strony, możesz renderować je na stronie savedLinks tak samo, jak zrobiłem to dla bieżącego łącza.

Powodzenia!
 49
Author: Mohamed Mansour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-02 15:08:10

Chciałem zaktualizować tę odpowiedź, ponieważ API się zmieniło.

Metoda chrome.tabs.getSelected() jest obecnie przestarzała. Zalecanym sposobem uzyskania adresu URL bieżącej karty jest użycie chrome.tabs.query():

chrome.tabs.query({'active': true}, function (tabs) {
    var url = tabs[0].url;
});

Nadal wymaga to dostępu do interfejsu API chrome.tabs w manifeście rozszerzeń:

"permissions": [ ...
   "tabs"
]

Możesz przeczytać więcej o deprecjacji tutaj: chrome.tabs.getSelected()

Mam nadzieję, że to pomoże!
 13
Author: thauburger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-10 05:16:10

Aby uzyskać bieżący adres url, musisz pobrać bieżącą kartę, a następnie wyodrębnić wszystkie paramentery.

Aby uzyskać bieżącą kartę, użyj chrome.tabs.getSelected () . Następnie, aby pobrać parametry z obiektu tab, zapoznaj się z tabs api

Twój fragment kodu powinien wyglądać tak,

chrome.tabs.getSelected(null, function(tab) {
  //properties of tab object
  tabId = tab.id;
  tabUrl = tab.url;

  //rest of the save functionality.
});

Musisz również zadeklarować uprawnienia" tabs " w manifeście rozszerzenia, aby korzystać z interfejsu tabs API. Na przykład

{
  "name": "My extension",
  ...
  "permissions": [
    "tabs"
  ],
  ...
}
 10
Author: phoenix24,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-14 17:04:51