打开文件对话框,带上下文菜单

时间:2018-04-13 05:03:08

标签: javascript google-chrome-extension firefox-addon

我正在为Google Chrome和Firefox创建一个Web扩展。 最终,当我点击我的扩展程序添加的上下文菜单项时,我的目标是打开文件对话框。但是,尝试这样做时有两个主要问题。

  1. 必须通过激活type = file的输入元素的用户操作打开文件对话框。

  2. 从扩展程序的后台脚本添加和调用上下文菜单事件。

  3. 我缺少一个银弹解决方案吗?

    失败的解决方案

    1. 背景输入元素:在后台脚本中使用时,输入元素将不起作用。
    2. 消息传递(适用于Chrome但不适用于Firefox):从后台向内容脚本发送消息会在Chrome上保留其用户触发状态,但在Firefox中会丢失。
    3. 对于有兴趣的人:这是适用于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
          }
      });
      

0 个答案:

没有答案