Skip to content
This repository was archived by the owner on Mar 27, 2026. It is now read-only.
This repository was archived by the owner on Mar 27, 2026. It is now read-only.

IE9 Flash callback issues #46

Open

Description

@k3mist

I am having problems in IE9 with the Flash FileReader callbacks that I can not resolve. After trying to figure this out over a weekend I found what I think may be the problem. I am using the FileAPI polyfill to get the files list in IE9 (which I imagine should not be an issue). This code should work I believe unless I really am doing something wrong here.

Filereader options

filereader:
    id: 'fileAPIProxy'
    filereader: '/assets/libs/webshims/vendor/filereader/filereader.swf'
    expressInstall: '/assets/libs/webshims/vendor/swfobject/expressinstall.swf'

Binding handler code (with feature detection removed)

   isImage = (file) ->
       file and typeof file.type isnt "undefined" and file.type.match('image.*') and file.name.match(/\.(gif|png|jpe?g)$/i)

   $(element).fileReader(viewModel.filereader).on(
      change: (event) ->
        file = FileAPI.getFiles(event)[0]
        if isImage(file)
          reader = new FileReader()
          reader.onload = (event) -> koPhoto.photo_uri(event.target.result)
          reader.readAsDataURL(file)
    )

The Flash callback that is issuing the JS error when readAsDataURL() is executed is below. This link references the Flash Callback problems in IE; http://zaalabs.com/2011/01/adobe-flash-externalinterface-issues-with-internet-explorer/

function __flash__addCallback(instance, name) {
  instance[name] = function () { 
    return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
  }
}

Activity

  1. matthiasleitner commented on Oct 22, 2013

    @matthiasleitner

    There should be no need to use the FileAPI polyfill.

    Bind the change event in the callback function of the FileReader as described in the readme and you will be able to access the file using event.target.files.

    Hope this helps.

    dirty example working in IE9:

    $("#input").fileReader
            id: "fileReaderSWFObject"
            filereader: "/flash/filereader.swf"
            callback: =>
              $("#input").change (e) =>
               # access e.target.files
  2. whatisboom commented on May 8, 2015

    @whatisboom

    resurrecting this... My callback is never firing, I get no feedback from the plugin even though debug mode is on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions