我是一个名为BeautifyTumblr的插件的制造者,它改变了Tumblr的外观。 我希望我的Chrome扩展程序能够自动检测更新时间并向用户显示更改日志。我使用带有chrome.runtime.onInstalled.addListener挂钩的事件页面来检测更新发生的时间,从扩展中的文本文件中检索更改日志..这一切正常,然后当我想将其转发到我的内容时通过chrome.tabs.sendmessage脚本它不会工作,没有任何事情发生,没有错误没有什么。我很难过。
非常感谢任何帮助!
活动页面:
chrome.runtime.onInstalled.addListener(function (details) {
"use strict";
if (details.reason === "install") {
} else if (details.reason === "update") {
var thisVersion = chrome.runtime.getManifest().version, xmlDom, xmlhttp;
xmlDom = null;
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", chrome.extension.getURL("changelog.txt"), false);
xmlhttp.send(null);
xmlDom = xmlhttp.responseText;
chrome.tabs.query({'url' : 'http://www.tumblr.com/*'}, function (tabs) {
if (tabs.length > 0) {
var mTab = tabs[0].id;
chrome.tabs.update(mTab, {active: true});
setTimeout(chrome.tabs.sendMessage(mTab, {beautifyTumblrUpdate: xmlDom}), 500);
} else {
chrome.tabs.create({'url' : 'http://www.tumblr.com/dashboard'}, function (tab) {
setTimeout(chrome.tabs.sendMessage(tab.id, {beautifyTumblrUpdate: xmlDom}), 500);
});
}
});
}
});
内容脚本中的相关代码:
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
"use strict";
window.alert('test');
if (request.beautifyTumblrUpdate) {
window.alert(request.beautifyTumblrUpdate);
} else if (request.beautifyTumblrInstall) {
window.alert(request.beautifyTumblrInstall);
}
}
);
答案 0 :(得分:0)
我也看到同样的事情。我不是100%肯定,但我认为这是因为chrome在更新扩展时关闭了后台页面和“旧”内容脚本之间的连接。这个bug中有更多信息:https://code.google.com/p/chromium/issues/detail?id=168263
答案 1 :(得分:0)
简单,在后台使用以下代码,
chrome.runtime.onInstalled.addListener(function(details){
if(details.reason == "install"){
chrome.tabs.create({ url: chrome.extension.getURL('welcome.html')});
}
});