将扩展程序从Chrome移植到FF
按照本教程(在Chrome中运行正常):http://www.codingscripts.com/check-whether-user-has-a-chrome-extension-installed/
从网页向分机发送消息: 在(web)pagescript.js中,这有:
function IsExist(extensionId,callback){
chrome.runtime.sendMessage(extensionId, { message: "installed" },
function (reply) {
if (reply) {
callback(true);
}else{
callback(false);
}
});
}
IsExist("Your extension id",function(installed){
if(!installed){
alert("Please install extension ");
}
});
从分机上的网页接收消息:
chrome.runtime.onMessageExternal.addListener(
function(req, sender, callback) {
if (req) {
if (req.message) {
if (req.message == "installed") {
callback(true);
}
}
}
return true;
});
我想要实现的目标
我的网站上的几个html页面需要在未安装扩展程序时重定向回主页。因此,这些页面需要能够(单独)确定是否已安装扩展。
我在打开网页时遇到错误
ReferenceError:未定义chrome。 (我也尝试过browser.runtime.onMessageExternal但是它抛出“浏览器”没有定义)。 有没有办法像Chrome中可以做到的那样?
答案 0 :(得分:1)
感谢所有评论,这就是我想出来的。 (我不得不去找document_end(以及评论建议document_start)因为我在content_script.js中有其他事情发生了
在我的附加组件的content_script.js
中document.body.classList.add("plugininstalledblabla");
在我的附加组件manifest.json
中 "content_scripts":
[
{
"matches": ["*://*/*"],
"all_frames": true,
"js": ["content_script.js"],
"run_at": "document_end"
}
]
在我网站的main.js脚本中
$(window).on("load", function() { // !! Window onLoad cause : document_end -> DOM should be loaded here
// Set
$body = $('body');
if(document.body.classList.contains("plugininstalledblabla")){
console.log('addon is installed');
}
});