Мой проект - расширение Chrome, которое будет выполнять следующее.Обходное решение Chrome Extension с popup html
- Нажмите на значок расширения.
- Появится всплывающее окно (из popup.html)
- В всплывающем окне появятся 5 кнопок.
- При нажатии одной из четырех кнопок будет выполнен один код javascript.
- закрыть всплывающее окно.
Поэтому в зависимости от ответа на эту должность здесь
Detect a button click in the browser_action form of a Google Chrome Extension
(большие окна Майклу за его огромную помощь)
Этот пример является только одной кнопки. Создал его только с одним из моих javascript-кода и отлично работает. Но когда дело доходит до поставить все 5 кнопок Я попытался сделать этот вид кодирования, но он не работал вообще (им новое в Javascript кода, поэтому не ненависть)
Вот коды
manifest.json
{
"background": {
"scripts": [ "background.js" ]
},
"browser_action": {
"default_icon": "img/icon.png",
"default_title": "TITLE",
"default_popup": "popup.html"
},
"icons": {
"128": "img/icon_128.png",
"19": "img/icon19.png",
"38": "img/icon38.png",
"48": "img/icon_48_2.png"
},
"manifest_version": 2,
"name": " NAME",
"description": " DESCR ",
"permissions": [ "activeTab" ],
"version": "2.0"
}
POPUP.HTML
<html>
<head>
<script src="popup.js"></script>
<style type="text/css" media="screen">
body { min-width:250px; text-align: center; }
#click-me-l { font-size: 20px; }
#click-me-f { font-size: 20px; }
</style>
</head>
<body>
<button id='click-me-l'>Click1</button>
<button id='click-me-f'>Click2</button>
</body>
</html>
POPUP.JS
function clickHandler(e) {
chrome.extension.sendMessage({directive: "popup-click-l"}, function(response) {
this.close(); // close the popup when the background finishes processing request
});
}
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('click-me-l').addEventListener('click', clickHandler);
})
function clickHandler(e) {
chrome.extension.sendMessage({directive: "popup-click-f"}, function(response) {
this.close(); // close the popup when the background finishes processing request
});
}
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('click-me-f').addEventListener('click', clickHandler);
})
BACKGROUND.JS
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
switch (request.directive) {
case 1 "popup-click-l":
// execute the content script
chrome.tabs.executeScript(null, { // defaults to the current tab
file: "script1.js", // script to inject into page and run in sandbox
allFrames: true // This injects script into iframes in the page and doesn't work before 4.0.266.0.
});
case 2 "popup-click-f":
// execute the content script
chrome.tabs.executeScript(null, { // defaults to the current tab
file: "script2.js", // script to inject into page and run in sandbox
allFrames: true // This injects script into iframes in the page and doesn't work before 4.0.266.0.
});
sendResponse({}); // sending back empty response to sender
break;
default:
// helps debug when request directive doesn't match
alert("Unmatched request of '" + request + "' from script to background.js from " + sender);
}
}
);
Так коды ссылки работают идеально подходит для только 1 кнопки. в этом примере я пытаюсь заставить его работать на 2 кнопки, но я не могу найти то, что я делаю неправильно. Если у кого-то есть идеи, я был бы признателен.
Большое спасибо за ваше время !!!
(ДОПОЛНЕНО 2. Обновлен коды для 2-х кнопок, но не работает.)
Предупреждение: вы отредактировали свой вопрос таким образом, чтобы аннулировать существующий ответ. В общем, вы хотите этого избежать. – Xan
@ Xan Я сказал Teepeemm, что я его отредактирую ... я не сделал это нарочно, поэтому ответ будет отключен от темы. Я только начинаю с самого попрошайничества моего вопроса. –
_Вы, вероятно, имеете в виду «начало». Это не не по теме, это просто рискованное редактирование, если вы делаете ответ показанным некорректным, пока это было. Если вы очистите его с автором ответа, тогда проблем нет. – Xan