【发布时间】:2011-07-12 01:24:09
【问题描述】:
我正在开发一个 Chrome 扩展程序,我必须通过 jQuery 在 javascript 中单击 <input type='file' /> 才能显示“另存为”对话框。是的,有人告诉我——大多数浏览器不允许你这样做。但是,我发现了一些非常奇怪的东西——如果我通过地址栏点击文件输入元素(并弹出保存对话框),如下所示:
javascript: $("<input type='file' />").appendTo("body").click();
所以,我想如果我可以在那里做,那么我当然可以从我的内容脚本中做...
显然我错了。从我的内容脚本中运行 $("<input type='file' />").appendTo("body").click(); 不仅会执行 zilch 除了附加元素之外,甚至模拟地址栏并执行 window.location = "javascript: $(\"<input type='file' />\").appendTo(\"body\").focus().click();"; 也会执行 zilch 。
我最初的想法是,这可能是内容脚本中的某种 chrome 限制,但我错了 - 通过内容脚本工作的扩展 jsShell 能够运行命令并获得我想要的结果而无需搭便车。
那么,有谁知道为什么 jsShell 和浏览器可以单击文件输入并获得一个保存对话框,但我的扩展程序不能?我已经尝试将 jsShell 拆开并弄清楚它的工作方式(尽管我没有看到它的工作方式有什么特别之处),但它仍然无法正常工作。并且控制台没有显示任何内容 - 没有错误,没有警告。
这让我的头过热,非常感谢任何帮助!
【问题讨论】:
标签: javascript jquery google-chrome google-chrome-extension