我有一个Chrome扩展程序AngularJS应用程序,它实现了Dropbox和Box文件选择器API。扩展通过内容脚本在页面上下文中运行。
除非在默认的“新标签页”上运行,否则一切都很有效 - 选择器打开后你可以选择文件但单击选择器上的按钮不会发回任何响应,选择器弹出窗口就在那里。它只在你导航到某个地方(任何地方)后才开始工作,刷新默认页面也无济于事。这是我的代码,但它是相应的Dropbox和Box API的标准:
的升降梭箱:
var dropboxOptions = {
success: function(files) {
$scope.$apply(function() {
for (var i = 0; i < files.length; i++)
$scope.attachments.push({"link" : files[i].link, "name" : files[i].name, "provider" : "DROPBOX"});
});
},
cancel: function() {},
multiselect: true
};
$scope.dropBoxAttachment = function() {
Dropbox.choose(dropboxOptions);
};
箱:
var boxOptions = {'clientId': MY_CLIENT_ID, 'linkType': 'shared', 'multiselect': true};
var boxSelect = new BoxSelect(boxOptions);
boxSelect.success(function(response) {
$scope.$apply(function() {
for (var i = 0; i < response.length; i++)
$scope.attachments.push({"link" : response[i].url, "name" : response[i].name, "provider" : "BOX"});
});
boxSelect.closePopup();
});
boxSelect.cancel(function() {
boxSelect.closePopup();
});
$scope.boxAttachment = function() {
boxSelect.launchPopup();
};
答案 0 :(得分:0)
文件选择器使用window.postMessage在文件选择器窗口和第三方页面之间传递消息。 Chrome扩展程序需要使用不同的方法传递邮件。 https://developer.chrome.com/extensions/messaging。