Я пытаюсь получить текущий URL-адрес вкладки во всплывающем окне, когда пользователь нажимает на значок расширения.
До сих пор я пытался content-scripts
установить внутренний html тега, записанного в popup.html. Но это дает мне противоречивое поведение. Тоже попробовал
chrome.browserAction.onClicked.addListener
но это не работает, когда мы используем всплывающие окна.
Итак, как лучше всего захватить URL-адрес, отобразить его во всплывающем окне и заставить его работать всякий раз, когда пользователь нажимает на значок?
Вот файл manifest.json, который я использую:
{
"name": "temp app",
"description" : "temp app",
"version": "1.0",
"manifest_version": 2,
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+F",
"mac": "MacCtrl+Shift+F"
},
"description": "Opens hello.html"
}
},
"browser_action" : {
"default_popup": "popup.html",
"default_icon": "hello_extensions.png",
"default_title": "default app"
},
"permissions" : [
"storage",
"contextMenus",
"tabs",
"<all_urls>"
],
"background" : {
"scripts" : ["background.js"],
"persistent" : false
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content_script.js"]
}
]
}
Я написал следующий код в popup.html:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="js_src/script7.js"></script>
<script type="text/javascript" src="js_src/jquery-3.3.1.min.js"></script>
</head>
<body>
<div>
<span id="cu" class="cu">Default</span>
<button id="cub" class="cub" >Get URL</button>
</div>
</body>
</html>
Исходный код script7.js:
document.getElementById('cub').onclick = function() {
// this method is not working while clicking the button
alert('Method called');
chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
$('#cu').html(tabs[0].url);
});
}
window.onload = function() {
// window.onload giving problem when i clicking multiple time continuously on the icon
// also I doubt this is the best way to implement it
chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
$('#cu').html(tabs[0].url);
});
}