如何让 filepicker 和turbolinks 很好地协同工作?

2024-02-10

我使用 Rails 3.2、turbolinks 和 Filepicker.io 开发一个 Web 应用程序

我像这样加载 API 密钥(coffeescript)。我认为$(document).ready就足够了,因为文件选择器脚本在第一个请求时加载一次。

$(document).ready ->
  filepicker.setKey "MY_KEY"

我使用以下内容(coffeescript)加载 Filepicker。 我应该注意的是我使用jquery-turbolinksgem,它将对 Turbolinks 的支持直接构建到 jquery 中。

jQuery ->
  $("#publications_bulk-new #upload-button").on "click", ->
    form = $(this).closest('form')
    filepicker.pickAndStore

当我直接访问该页面时,文件选择器按预期工作。 但是,当我使用 Turbolink 请求访问该页面时,我无法上传任何文件。

我可以打开表单、在 Dropbox 中浏览等。 但在上传时,我看到以下红色错误消息:

Cannot send results to the applicaiton. Sorry about this, it's our fault. Please close this window and try again.

再试一次也没有帮助。

我检查了 Chrome 28.0 的控制台是否有任何错误消息,发现了以下内容:

Blocked a frame with origin "https://www.filepicker.io" from accessing a frame with origin "http://placeholder.library.dev".  The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match.
 main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function) main.js:7

Uncaught Communication iframe not found main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function)

2013-07-29 更新“协议、域和端口必须匹配”

我将当前代码推送到我的生产环境,因为消息表明这取决于我的(开发)页面缺少 SSL 加密。

不幸的是,这不是唯一的问题

Blocked a frame with origin "https://www.filepicker.io" from accessing a frame with origin "https://jkreutz.mylibrar.io". Protocols, domains, and ports must match. main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function) main.js:7
Uncaught Communication iframe not found main.js:7
u main.js:7
l main.js:7
i.uploadFiles main.js:7
v.onFileDrop main.js:7
r lodash.min.js:6
(anonymous function)

TL;DR - 解决方法:在正文中使用传统的 javascript 文件包含,并在调用时要小心filepicker.setKey(...).


我正在使用启用了 Turbolinks 的 Rails 4 应用程序,当通过 Turbolinks 加载第二次(或更多次)包含文件选择器的页面时,我在使用 Filepicker 时遇到了类似的问题。我尝试过传统的 js 和异步的 js,每种都有自己的破解方式。

当使用“高级”(异步js)方法时,失败是令人讨厌的消息:

无法将结果发送到应用程序。抱歉,这是我们的 过错。请关闭此窗口并重试。

和 javascript 控制台错误Blocked a frame with origin ... and Uncaught Communication iframe not found(在 Chrome 中)。

我很确定这是由于第一次加载时由 js 添加到正文的 iframe 在页面正文更改(通过 Turbolinks)时被破坏,并且在第二次 Turbolinks 页面加载时不再添加。

使用传统的 js 方法,事情的顺序非常挑剔。如果我只是在页面上包含传统的js,然后filepicker.setKey(...)之后在页面上,第二个页面加载结果Uncaught FilepickerException: API Key not found。但是,如果我确定要打电话.setKey()后来(就像调用选择器时),它似乎起作用了。 (页面上似乎是用传统的js方法再次创建了通信iframe。)

我已经就此问题写信给 Filepicker 支持人员,希望他们能够为此提供推荐/记录的方法(因为他们似乎热衷于 Rails...)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 filepicker 和turbolinks 很好地协同工作? 的相关文章

随机推荐

  • 将 AVAssetWriter 与原始 NAL 单元结合使用

    我在 iOS 文档中注意到AVAssetWriterInput你可以通过nil为了outputSettings字典来指定输入数据不应重新编码 用于对附加到输出的媒体进行编码的设置 传递 nil 来指定不应重新编码附加的样本 我想利用此功能来
  • 如何为TableView创建NSIndexPath

    我需要在我定义的函数中删除表的第 1 行 为了使用deleteRowAtIndexPath你必须使用一个IndexPath定义了部分和行 如何创建这样的索引路径 以 int 1 作为唯一成员的数组将会崩溃 NSLog 消息指出该部分也需要定
  • pandas 按日期和年份分组并汇总金额

    我有这样的熊猫数据框 d dollar amount 200 25 350 00 120 00 400 50 1231 25 700 00 350 00 200 25 2340 00 date 22 01 2010 22 01 2010 2
  • 调试时如何跳出while循环

    在 Eclipse 中调试期间 我的代码进入了 while 循环 我不想循环直到满足条件 所以请告诉我如何在调试期间退出 while 循环 我看到 F7 在调试菜单下被禁用 请参阅此处的屏幕截图 You can select the lin
  • javascript 函数 btoa 的 C# 版本

    我需要将一些内容从 js 重新编码为 c 利用 js 中的 btoa 方法对一串 unicode 字符将它们转换为 base64 但是 据我所知 javascrpt 使用的编码与 c 中可用的所有编码不同 我需要编码完全相同 并且不会在这些
  • 如何在perl中验证数字?

    我知道有一个图书馆可以做到这一点 使用 Scalar Util qw looks like number 但我想使用 perl 正则表达式来做到这一点 我希望它适用于双数 而不仅仅是整数 所以我想要比这更好的东西 var d thanks
  • 从 OKHTTP 下载二进制文件

    我在我的 Android 应用程序中使用 OKHTTP 客户端进行网络连接 This https stackoverflow com questions 25367888 upload binary file with okhttp fro
  • Xpath获取上面的元素

    假设我有这样的结构 div class a div class b span Text Example span div div 在 xpath 中 我想检索属性 attribute 的值 因为我里面有文本 文本示例 如果我使用这个 xpa
  • 如何在VBA中实现消失动画?

    我正在尝试在 VBA 过程中测试形状上的动画效果 我已经实现了一个目标 即在主序列 定义在哪个位置Timeline 但我无法创建消失的动画 我在代码的开头检查了一些已经存在的 并且 EffectType 似乎返回与相关出现的动画相同的值 因
  • 实现永不过期的 OAuth 刷新令牌

    在 OAuth 2 的上下文中 如何处理refresh token过期 还是缺少 我使用 JSON Web 令牌 JWT 作为access token生命周期较短 20 分钟后过期 据我了解 这意味着我不必存储access token 仅验
  • 带标头的 post 请求中出现错误 411(需要长度),但标头具有 Content-Length。库卷曲

    我使用这个选项 curl easy setopt curl CURLOPT URL urlUpload curl easy setopt curl CURLOPT ERRORBUFFER errorBuffer curl easy seto
  • SQLite 自动增量不起作用

    好吧 这不是垃圾邮件 它应该很简单 我不知道为什么它不起作用 这是我的代码 gamesdatabase openOrCreateDatabase GamesDatabase MODE PRIVATE null gamesdatabase e
  • 获取数组中的所有非唯一值(即:重复/多次出现)

    我需要检查 JavaScript 数组以查看是否存在重复值 做到这一点最简单的方法是什么 我只需要找到重复的值是什么 我实际上不需要它们的索引或它们重复了多少次 我知道我可以循环遍历数组并检查所有其他值是否匹配 但似乎应该有一种更简单的方法
  • 保存和加载数据“MVVM”方式?

    我目前正在使用 Telerik 提供的一些控件开发一个 C WPF 项目 并且我尊重 MVVM 模式 包含数据的模型 将数据呈现给 View 的 ViewModel 显示数据的视图 当然 某些模型可以重用并显示在多个视图中 在我的例子中 数
  • ChangeDetectionStrategy.OnPush 的行为不符合我的预期

    我正在尝试熟悉 Angular 2ChangeDetectionStrategy OnPush性能提升 如所解释的here https blog thoughtram io angular 2016 02 22 angular 2 chan
  • 在执行之前使 CMake 打印命令

    我正在开发一个在 Linux 上使用 CMake 构建的大型 C 项目 CMake 运行正常 在模块和应用程序树中生成大量 Makefile 运行 GNUmake导致链接器错误 我怎样才能得到make在运行之前打印出确切的命令 d 选项不打
  • 使用 JPA 和 Google App Engine 更新查询

    我正在尝试更新我的实体类 但我得到 javax persistence PersistenceException Only select and delete statements are supported 当我不使用 Google 应用
  • Extjs:使用提交表单上传文件

    我正在尝试使用 ExtJs 和 Spring 上传文件 excel 但没有成功 所以我希望你能帮助我 在面板中 我有一个按钮 文件上传字段 我可以通过该按钮选择一个要上传的文件 xtype fileuploadfield buttonOnl
  • 我可以对不同的对象类型使用一个 TypeConverter 吗?

    到目前为止存储在房间数据库我一直在为每个类使用类型转换器 像这样 SerializedName sidebar Expose TypeConverters SidebarConverter class private Sidebar sid
  • 如何让 filepicker 和turbolinks 很好地协同工作?

    我使用 Rails 3 2 turbolinks 和 Filepicker io 开发一个 Web 应用程序 我像这样加载 API 密钥 coffeescript 我认为 document ready就足够了 因为文件选择器脚本在第一个请求