1

私は現在、MozillaPersonaのようなものを構築することを楽しんで遊んでいます。私はこれまでにこれを構築しました:

(function()
{
    var loginFailedCallback = function(){};

    var loginSuccessCallback = function(){};

    var MyId = {
        Request: function(fail, success)
        {
            loginFailedCallback = fail;
            loginSuccessCallback= success;

            window.open("oauth.html", 'test', "width=650,height=280,location=0,menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0");
        }
    };

    window.MyId = MyId;
})();

ご覧のとおり、サイト所有者がユーザーに認証プロセスを要求するために使用できるオブジェクトを作成しました。2つのコールバックはグローバル名前空間に公開されていないため、サイト所有者のコード(またはコンソール)によってトリガーされることはありません。

しかし、問題があります。ポップアップからこれらのコールバックを実行するにはどうすればよいですか?window.openerを使用してオープナーウィンドウにアクセスできることを知っています。しかし、コールバックはウィンドウオブジェクトに公開されていないので、どうすればよいですか?

4

2 に答える 2

0

ポップアップからは実行できません。

グローバルスコープに公開する必要があります。たとえば、ライブラリのグローバルオブジェクトを作成し、そのオブジェクトにアタッチします。

次に、関数が実行された場所を何らかの方法で確認する必要があります。サイト所有者が関数を公開しないのではなく、チェックによってトリガーすることを無効にします。

于 2013-03-22T15:50:13.697 に答える
0

Mozillas Personaの開発バージョンを調べると、クロスウィンドウメッセージングの使用が明らかになります。

于 2013-03-22T16:09:13.640 に答える