Dropbox和Box选择器不能在默认的Chrome页面上工作

Dropbox and Box choosers don't work on default Chrome page

本文关键字:Chrome 工作 默认 Box 选择器 不能 Dropbox      更新时间:2023-09-26

我有一个Chrome扩展AngularJS应用程序,它实现了Dropbox和Box文件选择器api。扩展通过内容脚本在页面上下文中运行。

一切都很好,除了在默认的"新选项卡"页面上运行时——选择器打开,你可以选择文件,但点击选择器上的按钮不会发送任何响应,选择器弹出窗口只是坐在那里。它只有在你导航到某个地方(任何地方)后才开始工作,刷新默认页面没有帮助。这是我的代码,但它是标准的每个Dropbox和Box api:

Dropbox:

    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();
    };

文件选择器使用窗口。postMessage在文件选择器窗口和第三方页面之间传递消息。Chrome扩展需要一个不同的方法来传递消息。https://developer.chrome.com/extensions/messaging。