Я хочу сделать расширение для Firefox (и Chrome, но после), которое сможет отправлять команды программе на python, установленной на ПК пользователя.
Поэтому я искал в Интернетеи нашел решение с browser.runtime.connectNative () На этой странице .
Я следовал учебному пособию, но результатов не было.Кроме того, окно настроек, которое открывается, когда пользователь нажимает на значок расширения, не запускает JS, который находится в файле.
Это часть разрешений и окна manifest.json: (Возможно, я забылчто-то)
"permissions": [
"activeTab",
"nativeMessaging"
],
"browser_action": {
"default_icon": "icon48.png",
"default_title": "WTP",
"default_popup": "settings.html"
},
Это строки с 22 по 46 из main.js:
var links = document.getElementsByTagName("a");
var result = "";
for (var l = 0; l < links.length; l++){
var lienActuel = links[l].href;
if (lienActuel.substring(0, 6) == "wtp://") {
// Maintenant on prépare l'envoi de la commande au serveur local
var request = new XMLHttpRequest();
var commande = "=cmd rechercher nom "+encodeURIComponent(lienActuel.substring(6));
var port = browser.runtime.connectNative("wtp_bridge");
//Listen for messages from the app.
port.onMessage.addListener((response) => {
console.log("Received: " + response);
port.disconnect();
});
port.postMessage(commande);
alert("Sent : "+commande);
if (result.substring(0, 15) == "=cmd SUCCESS : ") {
alert("SHA : "+result.substring(16));
document.getElementsByTagName("a")[0].href = result.substring(16);
}
else{
alert(result);
}
}
}
Это файл settings.html (окно, которое не работает с js):
<!DOCTYPE html>
<html>
<head>
<title>WTP Settings</title>
</head>
<body>
<h1>Settings</h1>
<form>
<p>
<input type="checkbox" id="vpn" name="vpn" onclick="showVPN();" ><label for="vpn">Use a VPN</label><br>
<input type="text" id="ipportvpn" name="ipportvpn" required minlength="10" maxlength="25" size="15" placeholder="IP:Port of the VPN">
<script type="text/javascript">
document.getElementById("ipportvpn").style.display = "none";
function showVPN() {
if (vpn.checked) {
document.getElementById("ipportvpn").style.display = "block";
}
else{
document.getElementById("ipportvpn").style.display = "none";
}
}
</script>
</p>
</form>
</body>
</html>
На данный момент это очень просто, но не сработало ...
Программа для получения запроса написана на python, и у меня не было никаких ошибок с ней, поэтомуЯ не буду перегружать свое сообщение.
Когда я использую web-ext , у меня появляется эта ошибка:
[firefox/remote.js][debug] Received message from client: {"from":"root","type":"tabListChanged"}
[firefox/index.js][debug] Firefox stderr: JavaScript error: moz-extension://c3e66db6-d90b-4c3e-86c1-8346247f5cdb/main.js, line 30: TypeError: browser.runtime.connectNative is not a function
Не могли бы вы сказать мне, как получить мое расширениедля связи с моей программой на python, пожалуйста?
И не могли бы вы также сказать мне, что не так с файлом settings.html?
Спасибо