我正在开发一个Chrome扩展程序,其中我需要通过jQuery在JavaScript中点击
<input type='file' />
来显示“另存为”对话框。是的,我已经被告知 - 大多数浏览器不允许您这样做。但是,我发现了一个非常奇怪的事情 - 如果我通过地址栏点击文件输入元素(并弹出保存对话框),那么我就可以做到这一点:javascript: $("<input type='file' />").appendTo("body").click();
因此,我认为如果我能在那里做到这一点,那么肯定可以从我的内容脚本中实现...
显然我错了。 从我的内容脚本运行$("<input type='file' />").appendTo("body").click();
不仅除了附加元素外什么也没做,甚至模拟地址栏并执行window.location = "javascript: $(\"<input type='file' />\").appendTo(\"body\").focus().click();";
同样什么也没做。
我的初步想法是,也许这是某种Chrome限制在内容脚本中,但我错了-通过内容脚本工作的扩展程序jsShell能够运行命令并毫不费力地获取所需的结果。
那么,有人知道为什么jsShell和浏览器可以单击文件输入框并获取保存对话框,但我的扩展程序却不能吗? 我已经尝试拆开jsShell并理解它的工作方式(尽管我没有看到它的特殊之处),但它仍然没有起作用。 而且控制台也没有显示任何东西-没有错误,也没有警告。
这让我的头昏脑胀,所以非常感谢任何帮助!