1

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

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

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

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

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

那么,根据我的描述,您认为完成这项任务的最佳方法是什么?我可以“调用”用户脚本或至少传递一些参数,以便我可以根据需要修改文本字段/下拉列表的值吗?任何建议都非常受欢迎。

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

  • 1) 能够在不使用此地址栏技巧的情况下执行此操作,并且
  • 2)有一个实际的界面来选择值,而不是仅仅对它们进行硬编码。
4

1 回答 1

1

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

他们当然可以。查看内容脚本,这些脚本可以设置为在匹配指定模式的站点中自动注入。您还可以通过chrome.tabs.executeScript. Chrome 扩展可以访问比用户脚本更多的工具。

您只需使用创建上下文菜单onclick时设置的任何回调,然后运行:

chrome.tabs.executeScript(null, { file: "script_to_inject.js"});

加载该脚本后,您有几个选项,但我只会使用消息传递从您的后台页面获取适当的信息,然后修改字段。

简单的例子

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

"permissions": [ "http://*/*" ],

script_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.extension.onRequest.addListener(function(request, sender, sendResponse) {
  switch (request) {
    case "options":
      sendResponse({birthday: "1/1/1970", name: "Unix"});
      break;
    default: // Add other cases as you see fit
      sendResponse({});
      break;
  }
});
于 2011-06-30T18:15:35.370 回答