[]无法触发浏览器文件上传框

// 程序入口
class GameMain {

private btn: Laya.Button;
private skin: string = 'images/button.png';

constructor() {

Laya.init(200, 300);

Laya.loader.load(this.skin, Laya.Handler.create(this, () => {
this.btn = this.createBtn(this.skin);
this.btn.on(Laya.Event.CLICK, this, this.onClick);
}));
}

/**
* 创建btn
*/
private createBtn(skin: string): Laya.Button {
let button = new Laya.Button(skin, '上传文件');
button.labelSize = 12;
button.labelColors = '#000000,#000000,#000000';
Laya.stage.addChild(button);
return button;
}

private onClick(): void {
// 触发浏览器文件上传框
let fileInput = Laya.Browser.document.getElementById('file');
fileInput.click();
console.log(fileInput);//input#file
}

}
new GameMain();
在laya里无法触发浏览器<input type="file" id="file">文件上传框?
已邀请:

ohkei - as3、as2、h5

赞同来自: cuixueying

使用原生js里监听input的change事件实现上传,把上传的文件url传递給laya。
缘于laya目前没有上传功能,只能借助原生js上传功能来架桥实现。
请看我的这个作品:http://ask.layabox.com/question/4467

cuixueying

赞同来自:

实现方式不同,如果是用的js原生下的input,你也要用js下原生的事件去为你的input添加事件监听!

liukaijv

赞同来自:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>

<button id="btn">上传</button>
<input type="file" id="file" style="display: none;"></input>

<script type="text/javascript">
var btn = document.getElementById('btn');
btn.addEventListener('click', function(){
document.getElementById("file").click();
});
</script>

</body>
</html>
我想你理解错了,我是想触发原生js的事件,不是去监听,我把两种的demo都上传了,你们可以测试一下看:
laya里“fileInput.click();”触发不了文件选择框:
// 触发浏览器文件上传框
 let fileInput = Laya.Browser.document.getElementById('file');
//这里不可以
 fileInput.click();
但是原生里 “document.getElementById("file").click();”是可以的:
btn.addEventListener('click', function(){
  //这里可以打开文件框
   document.getElementById("file").click();
});
都是trigger的是原生的input的click事件,但是laya里并没有弹出文件上传框

191*****096

赞同来自:

你解决了吗? 我也遇到这个问题,手机上无法弹出。
egret可以 原生也可以 不知道为什么

要回复问题请先

商务合作
商务合作