Показать / Скрыть расширение DIV Chrome
То, чего я пытаюсь достичь, просто.
Теперь уже сделано расширение под названием Note Anywhere. Обратите внимание, что когда вы щелкаете значок приложения, на веб-странице появляется заметка, и вы можете перетаскивать этот элемент в любом месте.
То, что я пытаюсь достичь, очень похоже.
- Нажмите #1 исчезает div в
- Нажмите #2 исчезает
Я буду беспокоиться о перетаскивании, когда смогу показать div на самом деле. Я потратил более 16 часов, пытаясь достичь этого эффекта, и после сильного волнения мне пришлось отредактировать свой вопрос и еще раз спросить с обновленной информацией. Так что это больше не будет проблемой.
Вот мой код
Манифест:
{
"name": "CamDesk",
"version": "0.0.1",
"description": "The Desktop Webcam Widget",
"permissions": ["tabs", "http://*/*", "https://*/*"],
"background_page": "background.html",
"browser_action": {
"default_icon": "images/logo.png",
"default_title": "CamDesk"
},
"content_scripts": [ {
"matches": ["http://*/*", "https://*/*"],
"css": ["css/style.css"],
"js": ["js/jquery.js", "js/jquery-swfobject.js", "js/background.js"]
} ],
"icons": {
"48": "images/48x48.png",
"256": "images/logo.png"
}
}
CSS:
.camdesk {
display:none;
width:320px;
height:240px;
background-color:#FFF;
box-shadow:0px 4px 16px rgba(0, 0, 0, 0.8);
overflow:hidden;}
Фоновая страница:
<html>
<head>
<script src="js/background.js"></script>
</head>
<div id="camdesk">
Please install the most recent version of flash to use CamDesk.
</div>
</html>
Сценарий содержания: "Показать и скрыть DIV"
$(document).ready(function() {
$('.camdesk').flash({
swf: './camdesk.swf',
width: 320,
height: 240
});
});
chrome.browserAction.onClicked.addListener(getMessage);
getMessage();
function getMessage() {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(null, function(tab) {
$('.camdesk').fadeOut(350);
}); //getting response from content script
});
}
chrome.extension.onRequest.addListener(
function(sendResponse) {
if $('.camdesk').fadeIn(350);
$('.camdesk').fadeOut(350);
else
sendResponse({});
});
1 ответ
Чтобы создать этот эффект, вам нужно использовать скрипты содержимого. Это единственный способ манипулировать DOM для веб-сайта, который вы посещаете. Поскольку вы пришли из контекста расширения (кнопка "Действие браузера"), вам необходимо использовать передачу сообщений для передачи команд для отображения / скрытия в DOM.
Итак, шаги для достижения того, что вам нужно:
- Создание экземпляра chrome.browserAction.onClicked.addListener на фоновой странице
- Используйте chrome.tabs.sendRequest, чтобы сообщить DOM, что делать. Вам нужно отправить сообщение с просьбой показать или скрыть наложение, которое вы хотели.
- Прослушивание запросов на расширение из скрипта содержимого с использованием chrome.extension.onRequest.addListener Когда вы получаете команду "Показать" или "Скрыть" от расширения, вы можете добавить / удалить DOM.
Надеюсь, что это дает вам небольшой толчок!