Javascript 需要关于Chrome扩展开发的重要建议吗

Javascript 需要关于Chrome扩展开发的重要建议吗,javascript,google-chrome-extension,userscripts,Javascript,Google Chrome Extension,Userscripts,很抱歉标题含糊不清,我会尽量具体描述 如果你看看我在这个网站上的前一个问题,你会发现我问了一些关于如何填充Chrome上下文菜单的提示。我之所以使用上下文菜单,是因为我想要一个易于访问的界面,向用户提供一个值列表。这些值表示不同类型的文档(例如出生证明或税务报告)。每个文件都有独特的属性(例如:出生证是“出生证”和“身份”)和规则。当我必须将文件上传到DMS(文档管理系统)时,就会用到这些属性和规则,DMS基本上是一个ASP.Net网站。文本字段和下拉列表用于接收我前面提到的规则和属性。通常,在

很抱歉标题含糊不清,我会尽量具体描述

如果你看看我在这个网站上的前一个问题,你会发现我问了一些关于如何填充Chrome上下文菜单的提示。我之所以使用上下文菜单,是因为我想要一个易于访问的界面,向用户提供一个值列表。这些值表示不同类型的文档(例如出生证明或税务报告)。每个文件都有独特的属性(例如:出生证是“出生证”和“身份”)和规则。当我必须将文件上传到DMS(文档管理系统)时,就会用到这些属性和规则,DMS基本上是一个ASP.Net网站。文本字段和下拉列表用于接收我前面提到的规则和属性。通常,在添加文件时,我必须根据文档类型手动填充这些字段,这是一个非常耗时的过程

现在,我想要做的是能够简单地单击上下文菜单中的一个项目(再次,让我们假设我单击“出生证明”),页面上的字段将自动更新为相应的值

到目前为止,我所做的是将大多数菜单项/文档类型及其相应的属性/规则以JSON格式放置。我的初衷是使用上下文菜单扩展中包含的脚本设置页面字段的值。只是,如果我没有弄错的话(如果我弄错了,请告诉我),您不能通过Chrome扩展直接修改网页上HTML元素的值

据我所知,userscript将能够完成这项任务,但我仍然希望有一个控制界面(上下文菜单)来选择文档的类型(我不希望脚本总是使用相同的参数执行)

那么,根据我所描述的,你认为实现这项任务的最佳方式是什么?我是否可以“调用”userscript或至少传递一些参数,以便可以根据需要修改文本字段/下拉列表的值?任何建议都是非常有用的

另外,我测试了一些脚本,看看这些字段的值是否可以通过编程方式更改。我只是用“javascript:”前缀复制粘贴了地址栏中的代码(带有一些字段的预定义值),它就像一个符咒!现在,我只需要

  • 1) 无需使用此地址栏技巧和
  • 2) 有一个实际的接口来选择值,而不仅仅是硬编码它们
只是,如果我没有弄错的话(如果我弄错了,请告诉我),您不能通过Chrome扩展直接修改网页上HTML元素的值

当然可以。签出,这可以设置为自动注入自己的网站。您还可以通过执行编程注入。Chrome扩展可以访问比用户脚本多得多的工具

您只需使用您在何时设置的
onclick
回调,然后运行:

chrome.tabs.executeScript(null, { file: "script_to_inject.js"});
加载脚本后,您有几个选项,但我只会使用它从后台页面获取适当的信息,然后修改字段

简单示例

manifest.json(将其添加到您的权限中)

脚本_to_inject.js

chrome.extension.sendRequest("options", function(response) {
  alert(response.birthday); // Alerts the birthday in the response
  alert(response.name);     // Alerts the name in the response
  document.getElementById("some_field_id").value = response.name;
});
background.html(或background.js)

只是,如果我没有弄错的话(如果我弄错了,请告诉我),您不能通过Chrome扩展直接修改网页上HTML元素的值

当然可以。签出,这可以设置为自动注入自己的网站。您还可以通过执行编程注入。Chrome扩展可以访问比用户脚本多得多的工具

您只需使用您在何时设置的
onclick
回调,然后运行:

chrome.tabs.executeScript(null, { file: "script_to_inject.js"});
加载脚本后,您有几个选项,但我只会使用它从后台页面获取适当的信息,然后修改字段

简单示例

manifest.json(将其添加到您的权限中)

脚本_to_inject.js

chrome.extension.sendRequest("options", function(response) {
  alert(response.birthday); // Alerts the birthday in the response
  alert(response.name);     // Alerts the name in the response
  document.getElementById("some_field_id").value = response.name;
});
background.html(或background.js)


只有在考虑谷歌浏览器插件的另一个选项时才能阅读评论的其余部分。您可以使用ASP.net(和javascript)创建一个界面,并添加一些“自动填充”选项,而不是将用户限制在浏览器中完成此任务。用户将单击自动填充按钮,该字段的值将从数据库中提取并自动填充。这可以从任何浏览器完成,并节省您的时间来为其他插件代码…只阅读评论的其余部分,如果你可以考虑比谷歌浏览器插件的另一个选项……您可以使用ASP.net(和javascript)创建一个界面,并添加一些“自动填充”选项,而不是将用户限制在浏览器中完成此任务。用户将单击自动填充按钮,该字段的值将从数据库中提取并自动填充。这可以在任何浏览器上完成,并将节省您为他人编写插件的时间。好的,我的理解是:onclick回调将包含chrome.tabs.executeScript(null,{file:“script_to_inject.js”}),其中“script_to_inject.js”将只包含更改字段的脚本(没有立即运行它的指令)。关于消息传递部分,我仍然不清楚,但是我会调用添加了正确参数的脚本,它会处理剩下的部分。我说得对吗?@Phil right,你注入的脚本只是一个文件;您不能向其中添加参数。加载该文件后,您将让它向后台脚本发送请求以获取信息,后台脚本将做出响应。这是一个功能强大的工具,因此可能感觉有些过火,但如果您以后想更改它们,这是设置它们的最佳方式。有关更多详细信息,请参阅