我正在为Google Chrome和Firefox创建一个Web扩展。 最终,当我点击我的扩展程序添加的上下文菜单项时,我的目标是打开文件对话框。但是,尝试这样做时有两个主要问题。
必须通过激活type = file的输入元素的用户操作打开文件对话框。
从扩展程序的后台脚本添加和调用上下文菜单事件。
我缺少一个银弹解决方案吗?
失败的解决方案
对于有兴趣的人:这是适用于Chrome但不适用于Firefox的代码。
Background.js:
chrome.contextMenus.create({
title: "Clickme",
contexts:["image"], // ContextType
onclick: function(){sendMsg("openDialog")} // Called when clicked in menu
});
Content.js:
var fInput= document.createElement("input"); //hidden input to open filedialog
fInput.setAttribute("type", "file"); //opens files
fInput.setAttribute("id", "fileopeninput"); ////only useful for inspector debugging
///TAKE MESSAGE FROM Background
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if(request.msg === "openDialog"){
fInput.click(); //triggers open file dialogue
}
});