0

Javascript/Firefox の厄介な問題に直面しています。関連するコードを以下に示します。


1. document.ready が発火し、(document.domain:8484/getTrack.php などへの) AJAX 要求を開始します。
2. AJAX 応答が受信されます。この応答には、画像の場所の URL (同じドメイン) が含まれています。したがって、sourceImage.onload が設定され、次に sourceImage.src が設定され
ます 3. sourceImage.onload が起動します。アイデアは、描画されるキャンバスに完全に収まるようにサイズ変更された画像をメモリに保持することです。このサイズ変更された画像 (の一部) をキャンバスに何度も書き込むので、このサイズ変更された画像をメモリに保持したいと思います。

    var SourceImage = new Image();
    var 準備されたImageData;

    sourceImage.onload = function() {
        var canvas = document.createElement('canvas');
        キャンバス幅 = 100; キャンバスの高さ = 100;
        var ctx = canvas.getContext("2d");        
        // 画像のリサイズ
        ctx.drawImage(sourceImage, 0, 0, sourceImage.width, sourceImage.height, 0, 0, canvas.width, canvas.height);    
        // 画像データとして保存
        試す {
            試す {
                準備されたImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
            }
            キャッチ (e) {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                準備されたImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
            }                          
        }
        キャッチ (e) {
            throw new Error("画像データにアクセスできません: " + e)
        }
    }

最初の getImageData 呼び出しがスローされ、enablePrivilege 呼び出しもすぐにスローされます。エラー テキストは、「"http://127.0.0.1" からのスクリプトは、UniversalBrowserRead 特権を拒否されました。」です。確認したところ、これらのメッセージは、別のドメインから画像の getImageData にアクセスしようとした場合にのみ表示されるはずですが、そうではありません (そうですか?)。厳密なセキュリティ ポリシーはありません (すべてデフォルト)、Firefox 4.0. 同じコードが Chrome でも正常に動作します。

4

2 に答える 2

1

'same origin' によってSame Origin Policyを参照すると、プロトコル、ホスト名、およびポートが同一である必要があります。ここで別のポートを使用していると思いますか?

私が思うにnetscape.security.PrivilegeManager.enablePrivilege、スクリプトが署名されていないために への呼び出しが失敗します。このコードを削除しようとしましたか?

于 2011-04-14T13:14:39.297 に答える
0

別のサブドメインでホストされている iframe との連携のために設定するとすぐにcontext.getImageDataと の呼び出しが失敗します。回避策として、domain.tld/subdomain/ を subdomain.domain.tld/ にプロキシし、目的の結果を得ました。PrivilegeManager.enablePrivilegedocument.domain = document.domain

于 2011-04-16T12:14:40.860 に答える