对于模糊的标题感到抱歉,我会尽量详细说明。
如果您查看我在此网站上的上一个问题,您会看到我要求提供有关如何填充Chrome上下文菜单的提示。我使用上下文菜单的原因是我想要一个易于访问的界面,向用户显示值列表。这些值代表不同类型的文件(例如出生证明或税务报告)。这些文件中的每一个都具有独特的属性(例如:出生证明是“出生证明”和“身份证明”)和规则。当我必须将文件上传到DMS(文档管理系统)时,使用这些属性和规则,DMS基本上是ASP.Net网站。文本字段和下拉列表用于接收我之前提到的规则和属性。通常,在添加文件时,我必须根据文档类型手动填写这些字段,这是一个非常耗时的过程。
现在,我想要做的是简单地点击我的上下文菜单项之一(再次,假设我点击“出生证明”)和页面上的字段将自动使用相应的值进行更新。
到目前为止,我所做的是将大多数菜单项/文档类型及其相应的属性/规则放在JSON格式中。我的初衷是使用上下文菜单扩展中包含的脚本设置页面字段的值。只有,如果我没有弄错(如果我没有,请告诉我),您无法直接通过Chrome扩展程序修改网页上HTML元素的价值。
根据我的理解,用户脚本将能够完成该任务,但我仍然希望有一个控制界面(上下文菜单)来选择文档类型(我不想要一个总是用相同的参数)。
那么,根据我所描述的,你会说什么是实现这项任务的最佳方式?我可以“调用”用户脚本或至少传递一些参数,以便我可以根据需要修改文本字段/下拉列表的值吗?任何建议都非常重要。
P.S。我测试了一些脚本以查看字段是否实际上可以以编程方式更改其值。我只是在地址栏中使用“javascript:”前缀复制粘贴代码(带有一些字段的预定义值),它就像一个魅力!现在,我只需要
答案 0 :(得分:1)
只有,如果我没有记错(如果我没有,请告诉我),您无法直接通过Chrome扩展程序修改网页上HTML元素的价值。
当然可以。查看content scripts,可以将其设置为在match a specified pattern的网站中自动注入。{3}}。您也可以通过chrome.tabs.executeScript
进行编程注入。 Chrome扩展程序可以访问比用户脚本更多的工具。
您只需使用creating your context menu时设置的onclick
回调,然后就可以运行:
chrome.tabs.executeScript(null, { file: "script_to_inject.js"});
加载该脚本后,您有几个选项,但我只需使用message passing从您的背景页面获取相应的信息,然后修改字段。
简单示例
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;
}
});