【问题标题】:Automate image upload on CKEditor在 CKEditor 上自动上传图片
【发布时间】:2015-08-08 23:50:41
【问题描述】:

我需要在使用 CKEditor 的网站上上传图片。对于每个图像,我单击“图像”按钮->“上传”选项卡->“选择文件”按钮->在文件浏览器中选择文件->“发送到服务器”按钮->等待上传 -> “确定”按钮

我几乎可以通过在控制台中输入javascript代码来触发适当的“点击”,除了粗体步骤,即我无法触发CKEditor上的“选择文件”按钮,即我无法以编程方式单击“浏览”按钮。请注意,一旦打开文件浏览器(通过手动单击),我可以使用自动热键输入文件的地址,然后按“输入”。 或者,我无法使用 javascript(跳过文件打开对话框)设置图像上传路径,这是一个安全风险,但我需要绕过它,至少通过使用我自己的插件/扩展。 请帮我触发文件浏览器或直接将图像路径设置为输入。

这里是 CKEditor 的演示:http://ckeditor.com/demo

到目前为止,我可以追随。

//click image button
document.getElementsByClassName("cke_button__image")[0].click();

// click "upload" tab
document.getElementsByClassName("cke_dialog_tab")[2].click();

//Need to either trigger "choose file" dialog box or otherwise assign "C:\temp.png" to input

//Click "send to server" button
document.getElementsByClassName("cke_dialog_ui_button")[4].click();

//Need to wait, and then click "OK" button
document.getElementsByClassName("cke_dialog_ui_button")[6].click();

更多信息:我正在编写 chrome-extension 来注入可以“click()”适当按钮的 javascript 函数。由于我已准备好构建扩展,因此必须有一种绕过安全性的方法。任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: javascript ckeditor browser-automation


    【解决方案1】:

    当文件选择器对话框弹出时,您无法使用 javascript 对其进行控制,并且在输入 type="file" 中您也无法设置其值,因为这会带来安全风险。

    您需要迁移到具有更高权限的环境才能完全实现您想要的。

    【讨论】:

    • 非常感谢!但是我应该使用什么环境呢?另外,我根本无法触发文件选择器!我手动单击“选择文件”按钮,然后使用自动热键键入文件地址,然后回车。让我编辑我的问题以明确表示! “选择文件”按钮位于 iframe 内,这可能就是我无法触发它的原因。
    • 如果使用自动热键,您可以在文件选择器对话框中键入内容,那没关系,这取决于您执行代码的方式,我不知道您的完整上下文。就我个人而言,我不使用 CKEditor 的默认文件上传,因为它太受限制了,但是您可能会发现使用 CKEditor API 来定位输入更容易,因为正如您所说它在 iframe 中并且我认为它没有任何名称或您可以使用的 id。
    • 我确实使用了类,但它不起作用,我在 iframe 中看到的所有元素上都使用了 click(),但文件对话框没有被触发!
    • 另外,我应该用什么“环境”来直接写路径?
    • 您可以使用 CKEDITOR.dialog.getCurrent().getContentElement("Upload", "upload").getInputElement().$ 在ckeditor.com/demo(打开对话框后)启动文件选择器。 .click() 然后由您决定如何在该对话框中键入并按下其确定按钮
    猜你喜欢
    • 2010-11-30
    • 2019-07-16
    • 2020-06-07
    • 2013-06-05
    • 2011-01-08
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多