Transcrypt和FileReader [英] Transcrypt and FileReader

查看:110
本文介绍了Transcrypt和FileReader的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将本地图像文件加载到浏览器中.该代码不起作用.对于Filereader的结果,它始终返回null. read_file3.py的代码:

I am trying to load a local image file into the browser. The code doesn't work. It always returns null for the result of the Filereader. The code for read_file3.py :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

class TestSystem:

    def openFile(self, event):
        self.inputvar = event.target
        console.log("self.inputvar"+self.inputvar)
        console.log("self.inputvar.files[0]"+self.inputvar.files[0])
        self.freader = __new__(FileReader())
        self.freader.onload = self.processInput()
        self.freader.readAsDataURL(self.inputvar.files[0])

    def processInput(self):
        dataURL = self.freader.result
        console.log("type:"+type(dataURL))
        console.log("dataURL:"+dataURL)
        document.getElementById('output').src = dataURL

testSystem = TestSystem()

和html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="__javascript__/read_file3.js"; charset="UTF-8"></script>
    <title>Read local image File</title>
  </head>
  <body>
    <main>
        <h1>Read a local image file!</h1>
        <p id="p1" class="para1">Read a local image file!</p>
      <input type='file' accept='image/*' onchange='read_file3.testSystem.openFile(event)'><br>
      <img id='output'>
      <p id="demo"></p>
    </main>
  </body>
</html>

推荐答案

在传递回调函数时不要使用(). 您不想调用它,只需传递函数的地址即可. 还花了我一段时间才能看到它. 顺便说一句,Transcrypt在这方面与JavaScript没什么不同. 括号也必须留在外面.

Don't use () when you pass a callback function. You don't want to call it, just pass the address of the function. Took me a while to see it as well. By the way, Transcrypt is no different from JavaScript in this respect. There also the braces would have to be left out.

请注意,您也可以简单地使用print()而不是console.log(). (但是在测试中,我可能还选择了console.log以避免任何意外)

Note that you can also simply use print() instead of console.log(). (But in a test I may also have opted for console.log to avoid any surprises)

这有效:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

class TestSystem:

    def openFile(self, event):
        self.inputvar = event.target
        console.log("self.inputvar"+self.inputvar)
        console.log("self.inputvar.files[0]"+self.inputvar.files[0])
        self.freader = __new__(FileReader())

        self.freader.onload = self.processInput
        # No braces, since you don't want to call this function
        # but just pass its address...

        self.freader.readAsDataURL(self.inputvar.files[0])

    def processInput(self):
        dataURL = self.freader.result
        console.dir (self.freader)
        console.log("type:"+type(dataURL))
        console.log("dataURL:"+dataURL)
        document.getElementById('output').src = dataURL
        console.dir (self.freader)

testSystem = TestSystem()

这篇关于Transcrypt和FileReader的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆