Javascript DOM Chrome扩展简单脚本
Javascript DOM Chrome Extension simple Script
我为Firefox做了一个扩展,随机检查所有单选按钮&网站上的复选框。现在我将为Chrome制作它。
JS(inject.js
):
function randomFromTo(from, to){
return Math.floor(Math.random() * (to - from + 1) + from);
}
function autoFill () {
for (i = 0; i < document.forms.length ;i++) {
for (j = 0; j < document.forms[i].length ;j++) {
if (document.forms[i].elements[j].type == "radio") {
start = j;
lastName = document.forms[i].elements[j].name;
while (j < document.forms[i].length - 1 && lastName == document.forms[i].elements[j+1].name) {
j++;
}
rand = randomFromTo(start, j);
document.forms[i].elements[rand].checked = true;
}
if (document.forms[i].elements[j].type == "checkbox") {
start = j;
lastName = document.forms[i].elements[j].name;
while (j < document.forms[i].length - 1 && lastName == document.forms[i].elements[j+1].name) {
j++;
}
rand = randomFromTo(start, j);
document.forms[i].elements[rand].checked = true;
}
}
}
}
autoFill();
所以我读了很多关于inject.js
和内容脚本的文章,所以我都试过了。并把它做成这样。
{
"name": "Auto Check Radio 'u0026 Checkbox",
"version": "0.0.1",
"manifest_version": 2,
"description": "",
"homepage_url": "",
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
},
"default_locale": "en",
"background": {
"page": "src/bg/background.html",
"persistent": true
},
"browser_action": {
"default_icon": "icons/icon16.png",
"default_title": "Autocheck",
"default_popup": "src/browser_action/browser_action.html"
},
"permissions": [
"tabs",
"notifications",
"http://*/",
"http://*/*",
"https://*/*"
],
"content_scripts": [{
"matches": ["https://*/*", "http://*/*"],
"js": ["src/inject/inject.js"],
"run_at": "document_end"
}],
"web_accessible_resources": ["src/inject/inject.js"],
"js": ["src/inject/inject.js"]
}
]
}
但我不知道如何运行代码。在Firefox上,这要容易得多
我不需要任何background.html
或browser_action.html
我只想通过单击图标在当前选项卡中运行脚本。
有人能告诉我把剧本放在哪里吗?
请先阅读Overview文档。尤其是架构部分。
任何与页面DOM交互的代码都必须在内容脚本中。您已经将代码放入src/inject.js
中。
-
现在,单击按钮时不需要弹出任何UI,因此从清单及其HTML中删除
"default_popup"
项。 -
您也不希望您的代码在加载选项卡时随机执行。这就是清单中
"content_scripts"
部分的内容,所以只需删除它。 -
最后,您不需要背景HTML文件。它们已被根据脚本列表构建的自动生成页面所取代。因此:
"background": { "scripts": ["src/bg/background.js"] }, "browser_action": { "default_icon": "icons/icon16.png", "default_title": "Autocheck" },
-
现在,后台脚本的唯一工作就是为按钮单击注册一个处理程序。这是通过
browserAction
API完成的:// src/bg/background.js chrome.browserAction.onClicked.addListener(function(tab) { chrome.tabs.executeScript(tab.id, {file: "src/inject/inject.js"}); });
就是这样,在这一点上它应该起作用。
现在,为了减肥。
-
您不需要持久的后台页面,因为它所做的只是保留不保存任何状态信息的简单事件侦听器。您可以安全地将
"persistent": false
添加到清单中。 -
你的权限太夸张了。有一个方便的
activeTab
权限,如果您的代码是通过按下浏览器操作按钮调用的,它可以让您访问当前页面。事实上,这是您的代码所需要的唯一权限。它将处理
executeScript
呼叫。"permissions" : ["activeTab"],
- Javascript简单的timeago脚本设置为跨类或标签id
- 一个简单的粘性头jQuery脚本的问题
- 使用内容脚本中的“简单首选项”打开插件的选项页
- 用于wooccommerce的简单JQuery脚本不起作用
- 有没有更简单的方法在 Wordpress 中为多个页面模板排队脚本
- 简单的拖放JS脚本不起作用
- 使用require.js后,如何通过简单的脚本引用访问jquery全局命名空间
- 使用html表单作为python脚本输入的简单解决方案
- 将简单的Perl脚本翻译成Python,向客户端发送响应
- HTML&使用简单脚本进行JavaScript(jQuery)过滤
- 简单<脚本>标记 - 访问控制允许原点不允许原点空
- 知道为什么我的简单脚本在页面中途停止工作
- 我的简单脚本有什么问题
- Jquery简单脚本只能在本地工作.为什么?像Javascript翻译
- 无法使此简单脚本正确运行
- 在Joomla 2.5中将简单脚本转换为模块需要帮助来修复Java
- Javascript DOM Chrome扩展简单脚本
- JS / Backbone -我的简单脚本不会触发"validate"在基本模型中
- Javascript Rhino + JQuery简单脚本性能问题
- Javascript简单脚本无法执行