Я пытаюсь создать расширение Chrome, которое заменяет ярлык Delicious. Я знаю, что уже есть расширение, которое делает это, но проблема с этим расширением заключается в том, что после закладки сайта всплывающее окно остается открытым (в отличие от использования букмарклета, когда всплывающее окно закрывается после отправки формы). Я воссоздал расширение и столкнулось с той же проблемой.
Здесь мой код:
manifest.json:
{
"name": "Delicious",
"version": "1.0",
"description": "Bookmark a site on Delicious",
"background_page": "background.html",
"permissions": [
"tabs"
],
"browser_action": {
"default_icon": "delicious.png"
},
"content_scripts": [
{
"matches": ["http://www.delicious.com/save*"],
"js": ["contentscript.js"]
}
]
}
background.html:
<html><script>
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getSelected(null, function(tab) {
w = window.open('http://delicious.com/save?url='+
encodeURIComponent(tab.url)+
'&title='+encodeURIComponent(tab.title)+
'&v=5&noui=1&jump=close',
'deliciousuiv5',
'location=yes,links=no,scrollbars=no,toolbar=no,width=550,height=550');
});
});
</script></html>
contentscript.js:
if (document.URL == 'http://www.delicious.com/save')
{
alert('closing...');
self.close();
alert('should have closed by now');
}
Когда я нажимаю кнопку "Вкус", всплывающее окно выглядит нормально, и я могу сохранить закладку, но после нажатия "Сохранить" всплывающее окно не закрывается. Появляются оба оповещения, но self.close()
, похоже, ничего не делает. Когда я удаляю проверку URL-адресов в contentcript.js, всплывающее окно появляется как обычно, первое предупреждение срабатывает сразу, а затем всплывающее окно закрывается (как и должно быть).
Почему это не работает? Не похоже, что Chrome мешает мне делать self.close(). Delicious что-то делает? Это что-то еще?
Файлы здесь, если вы хотите: [ссылка удалена, потому что drop.io вышел из бизнеса]