Windowsを使用します.nameドメイン間問題の解決


コンテンツソース
懏飛のブログ
ドメイン間のHTMLクリップを取得するのに適しており、JSONを取得するにはSCRIPTタグで解決できる.
ドメイン間で実現するプロセスを独自の言葉で説明します.
Aドメイン名の下のあるページの下で、別のドメイン名B(サブドメインまたは異なるドメイン名)にデータの取得を要求する必要があり、まずIRAMME(SRCが要求するURLとして直接記入)を作成してドメイン間ページにロードし、同時にそのIRAMMEのonloadイベントを傍受する.IRMAEにロードされたBドメイン名ページはJSでwindowにデータを与える.nameは、付与が完了すると、自身のlocationを変更することによりAドメイン名の下の空白ページにジャンプする、この空白ページのロードが完了すると、今回要求されたコールバックをトリガーしてIRAMMEを除去する、このときIRAMMEはホームページと同ドメイン(いずれもAドメイン)であるため、IRAMMEのwindowを取得することができる.nameのデータ
次のコードは原文から抜粋されています.
window.nameのすばらしさ:name値は異なるページ(さらには異なるドメイン名)にロードされた後も存在し、非常に長いname値(2 MB)をサポートすることができる.
Aドメインは以下のコードで要求を開始し、コールバックを実現する

(function(){
    var YUD = YAHOO.util.Dom, YUE = YAHOO.util.Event;

    dataRequest = {
        _doc: document,
        cfg: {
            proxyUrl: 'proxy.html'
        }
    };

    dataRequest.send = function(sUrl, fnCallBack){
        if(!sUrl || typeof sUrl !== 'string'){
            return;
        }

        sUrl += (sUrl.indexOf('?') > 0 ? '&' : '?') + 'windowname=true';

        var frame = this._doc.createElement('iframe'), state = 0, self = this;
        this._doc.body.appendChild(frame);
        frame.style.display = 'none';

        var clear = function(){
            try{
                frame.contentWindow.document.write('');
                frame.contentWindow.close();
                self._doc.body.removeChild(frame);
            }catch(e){}
        };

        var getData = function(){
            try{
                var da = frame.contentWindow.name;
            }catch(e){}
            clear();
            if(fnCallBack && typeof fnCallBack === 'function'){
                fnCallBack(da);
            }
        };

        YUE.on(frame, 'load', function(){
            if(state === 1){
                getData();
            } else if(state === 0){
                state = 1;
                frame.contentWindow.location = self.cfg.proxyUrl;
            }
        });

        frame.src = sUrl;
    };
})();

Bドメインの下のページはこのようにwindowにデータをバインドする.name

<html>
    <body>
        <p id="content">
            some <strong>html/xml-style</strong>data
        </p>
    </body>
    <script type="text/javascript">
        window.name = document.getElementById("content").innerHTML;
    </script>
</html>

もう1つのドメイン間ソリューションは複雑で、同じドメインの下のサブドメインとサブドメイン、またはサブドメインと親ドメインの通信を実現できますが、ホームページ面がプライマリドメインである必要があります.
DEMOの表示