0

目前在我的应用程序中面临 Filepicker 的 iframe 问题......我的工具:

  • 框架:Rails 4(包括 turbolinks)
  • API: Filepicker.io (JS)
  • 文件类型:咖啡脚本

我的示例代码:

ready = ->
filepicker_api_key = $js_data.data('filepickerApiKey')
unprocessed_path = $js_data.data('unprocessedPath')
filepicker.setKey(filepicker_api_key)
  $('#image-upload').click (e) ->

    picker_options =
    services: ['COMPUTER']
    mimetypes: ['image/*']

    store_options =
    location: 's3'
    path: unprocessed_path
    access: 'public'

    filepicker.pickAndStore picker_options, store_options ->
      console.log 'foobar'
      # alot of code comes here.. which works whenever I refresh the page

$(document).ready(ready)
$(document).on('page:load', ready)

一旦我尝试上传东西,它就会停止。我的日志显示此错误:

错误:访问属性“filepicker_comm_iframe”的权限被拒绝

并且不显示我的'foobar'日志

但是当我刷新页面时,我没有收到任何错误,并且文件相应地上传。我试图避免必须刷新页面才能成功上传的缺陷。

4

3 回答 3

1

由于使用 turbolinks 会重新加载主体,因此我建议在布局文件中移动以下代码:

<%= filepicker_js_include_tag %>

<head><body>

它应该可以正常工作(在 Rails 4 中,没有安装'jquery-turbolinks' gem)。将来,我们将研究通用解决方案,独立于该标签的放置位置。

于 2014-06-24T12:04:18.437 回答
0

我能够通过添加gem 'jquery-turbolinks'到我的 Gemfile(因此运行包)并包含//= jquery.turbolinks到我的 application.js 中来解决这个问题。

到目前为止,这是我遇到的唯一有价值的工作。对于这个特定的场景。

于 2013-11-29T11:51:47.757 回答
0

加载后,filepicker js 将 2 个 iframe 添加到正文。当您使用 turbolinks 更改页面时,它们就消失了。所以你需要自己重新添加它们:

    if $("#filepicker_comm_iframe").length == 0
      $("body").append '<iframe name="filepicker_comm_iframe" id="filepicker_comm_iframe" src="https://dialog.filepicker.io/dialog/comm_iframe/" style="display: none;"></iframe>'
    if $("#fpapi_comm_iframe").length == 0
      $("body").append '<iframe name="fpapi_comm_iframe" id="fpapi_comm_iframe" src="https://www.filepicker.io/dialog/comm_iframe/" style="display: none;"></iframe>'
于 2017-03-10T02:38:08.097 回答