Google Chrome在其chrome.webrequest API中包含一些功能(例如,http: //developer.chrome.com/extensions/samples.html#12a7bf1490a26359eadf10917e37c5b9),可用于将某些网址重定向到指定的网页.Chrome扩展程序使用阻止事件侦听器(chrome.webRequest.onBeforeRequest.addListener)并对目标网址执行重定向.我如何在FireFox附加组件中做类似的事情?
google-chrome webrequest firefox-addon google-chrome-extension firefox-addon-webextensions
我正在尝试使用Firefox中相对较新的WebExtensions将chrome扩展程序移植到firefox .
我总是收到以下错误
跨源请求被阻止:同源策略禁止在....读取远程资源(原因:缺少CORS头'Access-Control-Allow-Origin')
我添加了网站,我想访问manifest.json中的权限部分,就像在网站上解释的那样,以及谷歌Chrome的工作.
通常它应该以这种方式工作,至少它在https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Cross-domain_privileges上以这种方式解释
我会非常感谢任何帮助,因为我没有想法.
如果在Firefox的manifest.json中指定了内容脚本,Firefox还将为已打开的选项卡加载内容脚本并执行它们,即使选项卡已处于已加载和就绪状态.
为已打开的标签安装扩展程序时,Google Chrome不会添加任何内容脚本.为旧版标签刷新页面时会加载内容脚本.
我想问的是Firefox的行为是预期的还是bug?
firefox google-chrome google-chrome-extension firefox-addon-webextensions
我正在尝试为浏览器的Web扩展测试示例代码.但是,它不起作用.我检查了控制台的谷歌浏览器和Firefox.它不打印任何东西.以下是我的代码:
manifest.json:
{
"description": "Demonstrating webRequests",
"manifest_version": 2,
"name": "webRequest-demo",
"version": "1.0",
"permissions": [
"webRequest"
],
"background": {
"scripts": ["background.js"]
}
}
Run Code Online (Sandbox Code Playgroud)
background.js:
function logURL(requestDetails) {
console.log("Loading: " + requestDetails.url);
}
chrome.webRequest.onBeforeRequest.addListener(
logURL,
{urls: ["<all_urls>"]}
);
console.log("Hell o extension background script executed");
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
firefox-addon google-chrome-extension google-chrome-devtools firefox-developer-tools firefox-addon-webextensions
我的Chrome扩展程序弹出窗口中有一个文本区域和一个按钮.我希望用户在文本区域中输入所需的文本.然后,一旦他们点击该按钮,它将注入一个内容脚本,以更改当前页面上的字段<textarea class="comments">文本,该文本必须是用户<textarea>在Chrome扩展程序弹出窗口中输入的文本.
我的问题是,我怎样才能从文本<textarea>中我popup.html,并从它传递popup.js的内容脚本?
这就是我目前所拥有的:
popup.html:
<!doctype html>
<html>
<head><title>activity</title></head>
<body>
<button id="clickactivity3">N/A</button>
<textarea rows="4" cols="10" id="comments" placeholder="N/A Reason..."></textarea>
<script src="popup.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
popup.js:
function injectTheScript3() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
// query the active tab, which will be only one tab
//and inject the script in it
chrome.tabs.executeScript(tabs[0].id, {file: "content_script3.js"});
});
}
document.getElementById('clickactivity3').addEventListener('click', injectTheScript3);
Run Code Online (Sandbox Code Playgroud)
content_script3:
//returns a node list which is good
var objSelectComments = …Run Code Online (Sandbox Code Playgroud) html javascript google-chrome-extension firefox-addon-webextensions
我正在制作Firefox WebExtension插件.这是应该发生的事情:
XMLHttpRequest这是我的Chrome扩展程序的功能.但是,我无法使用Firefox附加组件.JavaScript被注入并执行,因为我确实看到了alert()我在脚本末尾放置的内容.但是,没有调用我的服务器.Firefox调试器没有显示网络活动,也没有显示任何错误.
表现:
{
"manifest_version": 2,
"name": "my_name",
"version": "1.0",
"description": "My description",
"icons": {
"48": "icons/my_icon.png"
},
"permissions": [
"activeTab"
],
"browser_action": {
"default_icon": "icons/some_icon.png",
"default_title": "My Name"
},
"background": {
"scripts": ["background.js"]
}
}
Run Code Online (Sandbox Code Playgroud)
background.js:
browser.browserAction.onClicked.addListener(function(tab) {
browser.tabs.executeScript(null, {file:"content_script.js"});
});
Run Code Online (Sandbox Code Playgroud)
content_script.js:
var xmlHttp=new XMLHttpRequest();
xmlHttp.open("POST", "https://www.my_site.org",true);
var formData = new FormData();
formData.append("my_var", "my_var");
xmlHttp.send(formData);
alert("I do get here!");
Run Code Online (Sandbox Code Playgroud) javascript xmlhttprequest firefox-addon firefox-addon-webextensions
我为Firefox和Chrome开发了一个附加组件.它有内容脚本.我想在浏览器选项卡的控制台中访问它们(在Firefox Web控制台上).例如,我想输入在控制台的内容脚本中定义的全局变量,它将输出其值.
在Chrome中,我可以通过按下打开控制台F12,然后导航到开发人员工具中的控制台选项卡.它在过滤器按钮后面有一个dropbox,用于选择我所在的上下文(页面/内容脚本):

在Firefox中,如何做同样的事情?
firefox firefox-addon firefox-developer-tools firefox-addon-webextensions
我有一个网页(我无法控制):
<body oncontextmenu="return false">
Run Code Online (Sandbox Code Playgroud)
我想启用右键单击,但我无法做到这一点.在保存的html中,当我删除它oncontextmenu然后它开始工作.
我已经尝试过这里提到的所有内容,但它对我不起作用.
这是保存的网页副本.
javascript jquery google-chrome-extension firefox-addon-webextensions
(注意,这是我遇到的问题的自我回答问答)
尝试将WebExtension提交给Mozilla Add-Ons进行公开列表后,审阅者拒绝了提交,并提供以下消息:
您的加载项包含的JavaScript库文件与我们已知的任何版本都不匹配.我们要求所有加载项都使用未修改的发行版本.
我们接受从'ajax.googleapis.com','jquery.com'或'jqueryui.com'下载的JQuery/JQuery-UI库; 并且未经任何修改即使用(已下载且未复制粘贴).缩小版本更好.(文件名更改无关紧要)
对不起,我们无法接受修改,重新配置或自定义的库.
同一问题的另一个症状:来自jQuery的初始验证中的几个"对innerHTML的不安全分配"警告.
但是,有问题的文件确实是从jquery.com下载的版本,缩小版本,并没有故意修改.所以发生了什么事?
致力于将旧的Firefox扩展迁移到最新的Webextension格式.之前,我能够通过以下方式获取活动选项卡的URL:
var URL = tabs.activeTab.url;
Run Code Online (Sandbox Code Playgroud)
现在,它不起作用.我看到了tabs.getCurrent()和tabs.Tab - > url的一些引用,但没有找到关于如何使用它的单个示例.那么我如何获取活动Firefox选项卡的URL并将其放入变量以供进一步使用?
谢谢,浣熊
firefox-addon-webextensions ×10
firefox ×4
javascript ×4
jquery ×2
amo ×1
cors ×1
html ×1
tabs ×1
webrequest ×1