我的代码有问题。 调用“simulateClickBtn”时,会出现一个系统弹出窗口以选择文件。 当选择文件时,我们将进行回调并完成sendMessage功能。 但它只是第一次有效。其他时候,我从来没有进行变革回来..
HTML:
<input type="file" id="hiddenInput" name="somename" size="chars">
JS:
this.simulateClickBtn = function simulateClickBtn() {
localFileChoose = undefined ;
$('#hiddenInput').click();
$('#hiddenInput').off().on("change", function(evt){
chrome.runtime.sendMessage({
message : "SHOW_UPLOAD_TYPE_VIEW",
fileName: evt.target.files[0].name,
}, function(response) { });
localFileChoose = evt.target.files[0];
});
};
答案 0 :(得分:1)
因此,您可能不希望在模拟点击处理程序中绑定隐藏的单击处理程序。每次点击都会重新绑定它,这是不必要的。尝试这样的事情:
var chosenFile;
this.simulateClickBtn = function simulateClickBtn() {
$('#hiddenInput').click();
};
$('#hiddenInput').on('change', function(evt) {
chrome.runtime.sendMessage({
message : 'SHOW_UPLOAD_TYPE_VIEW',
fileName: evt.target.files[0].name,
}, function(response) { });
chosenFile = evt.target.files[0];
});