Javascript 无法在除我之外的其他浏览器/计算机上运行我的chrome扩展:未打包的分发中存在某些不匹配?
对不起,我的英语很差,希望你能理解这个问题 我是chrome扩展开发的新手,我的代码中肯定有很多 改变或优化的事物; 无论如何,我已经写了一个简单的代码,(似乎)至少可以从我的chrome上运行 代码在特定页面中每隔X分钟单击一个按钮,然后等待并在页面中解析结果 我已经:Javascript 无法在除我之外的其他浏览器/计算机上运行我的chrome扩展:未打包的分发中存在某些不匹配?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,对不起,我的英语很差,希望你能理解这个问题 我是chrome扩展开发的新手,我的代码中肯定有很多 改变或优化的事物; 无论如何,我已经写了一个简单的代码,(似乎)至少可以从我的chrome上运行 代码在特定页面中每隔X分钟单击一个按钮,然后等待并在页面中解析结果 我已经: 一个内容脚本(从manifest.json加载),它在页面中“注入”一些按钮和文本输入框,所以用户可以在单击“开始按钮”之前设置一些“过滤器参数”;单击开始按钮,然后将sendMessage()发送到background.j
- 一个内容脚本(从manifest.json加载),它在页面中“注入”一些按钮和文本输入框,所以用户可以在单击“开始按钮”之前设置一些“过滤器参数”;单击开始按钮,然后将sendMessage()发送到background.js,为单击设置报警事件
- 一个eventPage(在实际中设置为persistent true),用于处理来自选项卡的请求并为每个选项卡设置倒计时报警;当X min被传递时,向感兴趣的选项卡发送一条消息
var extid = "mcmhdskbnejjjdjsdkksmeadjaibo";
var extVer = "1.5";
var extStatus = 0;
$(document).ready(function () {
///...
chrome.runtime.sendMessage(extid, {message: "version"},
function (reply) {
if (reply) {
if (reply.version) {
if (reply.version == extVer) {
if (reply.gminfo != 'OK') {
extStatus = 1; /// ...
似乎chrome.runtime未定义,网页无法调用sendMessage()。
编辑:只有在加载我的扩展时,才会出现此未定义的情况
加载扩展时可能会有冲突?但在我的chrome浏览器中
有专家能指出我要调查的方向吗
谢谢你的建议
My Manifest.json:
{"manifest_version": 2,
"name": "myAlarm",
"description": "This extension alerts.",
"version": "0.1",
"permissions": [
"alarms",
"system.cpu",
"storage",
"tabs",
"webNavigation",
"https://www.mytargetsite.com/subUrl/"
],
"web_accessible_resources": [
"icon.png",
"vanillaSelectBox.css"],
"content_scripts": [
{
"matches": ["https://www.mytargetsite.com/subUrl/"],
"css": ["vanillaSelectBox.css"],
"js": ["jquery-3.3.1.min.js","vanillaSelectBox.js","taffy-min.js","content.js"],
"run_at": "document_end"
}
],
"background": {
"scripts": ["eventPage.js"],
"persistent": true
},
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"icons": {
....
}
}
我的内容,js(已剥离):
My eventPage.js:
var curr_alarms =[];
chrome.extension.onMessage.addListener(function(request, sender)
{ /// here receive start countdown message from content.js and set alarm ...
}
chrome.alarms.onAlarm.addListener(function(alarm) {
/// here i manage each alarm for each tab
});
chrome.tabs.onRemoved.addListener(function(tabid, removed) {
// ...
});
chrome.tabs.onUpdated.addListener(function
(tabId, changeInfo, tab) {
//
});
编辑:在不起作用的浏览器中,我还可以阅读:
CORS策略已阻止从源“”访问位于“”的XMLHttpRequest(从“”重定向):对飞行前请求的响应未通过访问控制检查:飞行前请求不允许重定向
https
),或者扩展被其域管理员通过运行时阻止的主机阻止,您可以在chrome://policy
chrome.runtime
从网页代码(而不是内容脚本!)向扩展发送消息,扩展的清单应在MessageExternal上声明并使用不同的事件,另请参阅1-你说得对!我花了几个小时,然后发现302重定向url在加载时不匹配!所以这才是真正的问题。我抓住了这个机会:我有点困惑。。。添加密钥是否需要“手动”分发我的未打包扩展?(我的意思是,我会向用户发送一个zip文件,然后他们提取并加载..可以吗?或者我遗漏了什么?)
var curr_alarms =[];
chrome.extension.onMessage.addListener(function(request, sender)
{ /// here receive start countdown message from content.js and set alarm ...
}
chrome.alarms.onAlarm.addListener(function(alarm) {
/// here i manage each alarm for each tab
});
chrome.tabs.onRemoved.addListener(function(tabid, removed) {
// ...
});
chrome.tabs.onUpdated.addListener(function
(tabId, changeInfo, tab) {
//
});