°Ù·Ö°ÙÔ´ÂëÍø-Èý¨Õ¾±äµÃÈç´Ë¼òµ¥£¡ µÇ¼ ×¢²á Ç©µ½Áì½ð±Ò£¡

Ö÷Ò³ | ÈçºÎÉý¼¶VIP | TAG±êÇ©

µ±Ç°Î»ÖÃ: Ö÷Ò³>ÍøÕ¾½Ì³Ì>JS½Ì³Ì> JavaScript¿çÓòµÄ½â¾ö·½Ê½×ܽᣨ´úÂ룩
·ÖÏíÎÄÕµ½£º

JavaScript¿çÓòµÄ½â¾ö·½Ê½×ܽᣨ´úÂ룩

·¢²¼Ê±¼ä£º09/01 À´Ô´£ºÎ´Öª ä¯ÀÀ£º ¹Ø¼ü´Ê£º
±¾ÆªÎÄÕ¸ø´ó¼Ò´øÀ´µÄÄÚÈÝÊǹØÓÚ¿çÓòµÄ½â¾ö·½Ê½×ܽᣨ´úÂ룩£¬ÓбØÈ»µÄ²ÎÕÕ ¼ÛÖµ£¬ÓÐÐèÒªµÄ°é¿ÉÒÔ²ÎÕÕ Ò»Ï£¬µ«Ô¸¶ÔÄãÓÐËù°ïæ¡£

ͬԴÕþ²ß£ººÍ̸¡¢ÓòÃû¡¢¶Ë¿Ú¾ùÀ×ͬ¡£

·ÇͬԴÏÞÖÆ£º

cookie¡¢localStorage¡¢indexDBû·¨¶ÁÈ¡¡£

DOMû·¨ÁÔÈ¡¡£

AJAX¿ÒÇóû·¨·¢ËÍ¡£

½â¾ö·½Ê½£º

Ò»¡¢JSONP

µÀÀí£ºÍ¨¹ý¶¯Ì¬Ôö¼ÓÒ»¸ö<script>ÔªËØ£¬ÏòЧÀÍÆ÷¿ÒÇóJSONÊý¾Ý¡£Ð§ÀÍÆ÷½ÓÊÕ¿ÒÇ󷵻ص½Ö¸¶¨¾ßÃû»Øµ÷º¯Êý¡£

eg:

function addScript(src) {
    var script = document.createElement('script');
    script.setAttribute("type", "text/javscript");
    script.src = src;
    document.body.appendChild(script);
}

window.onload = function() {
    addScript("https://segmentfault.com/data?callback=getData");
}

function getData(data) {
    console.log(data)
}

ÁôÒ⣺
1¡¢²éѯµÄUrlÖÐcallbackÐèÒªÖ¸¶¨»Øµ÷º¯ÊýµÄÃû×Ö¡£
2¡¢<script>ÔÚÔĶÁÆ÷×÷Ϊ´úÂëÔËת£¬¶¨ÒåµÄgetDataº¯Êý»á±»ÂíÉϵ÷È¡¡£
3¡¢·µ»ØµÄJSON²ÎÊý×÷Ϊjavascript¶ÔÏ󣬲»ÊÇ×Ö·û´®£¬²»ÐèҪֹͣJSONת»»¡£
4¡¢jquery¿âµÄ $.getJSON()Ò²¿ÉÒÔʵÏÖ¡£

$.getJSON("https://segmentfault.com/data?callback=?", function(data) {
    console.log(data)
})

ȱÏÝ£ºÊÇGET·½Ê½ÁÔÈ¡£¬²»Ö§³Å POST¡£

¶þ¡¢window.postMessage

window.postMessage ²»¹Ü¿É·ñͬԴ¶¼Í¬Òâ¿ç´°¿ÚͨѶ¡£ postMessage ²ÎÊýÒ»ÊÇ´«µÝÄÚÈÝ£¬²ÎÊý¶þÊǺÍ̸+ÓòÃû+¶Ë¿Ú»òÕߣ¨*±íʾ²»ÏÞÖÆÓòÃû£©

Ò³ÃæÒ»£º"https://www.segmentfault.com/page1.html"    //´«µÝÒ³Ãæ
<script>
    window.onload = function () {
        if (typeof window.postMessage === undefined) {
            alert("ÔĶÁÆ÷²»Ö§³ÅpostMessage£¡");
        } else {
            window.open.postMessage({data: "Hello World"}, "https://www.example.com/page2.html");
        }
    }
</script>
Ò³Ãæ¶þ£º"https://www.example.com/page2.html"    //½ÓÊÕÒ³Ãæ
<script>
    window.addEventListener('message', function(e) {
        console.log(e.data);
    },false);
</script>

ʼþ½ÓÊÕwindow.addEventListener('message', function(){});ÖеÄmessageʼþ¶ÔÏóeventÓÐÈý¸öÊôÐÔ£º
1¡¢event.source£º·¢ËÍÐÂÎŵĴ°¿Ú
2¡¢event.origin: ÐÂÎÅ·¢ÏòµÄÍøÖ·
3¡¢event.data: ÐÂÎÅÄÚÈÝ

<script>
    //Ô®Óø¸´°¿Ú·¢ËÍÐÅÏ¢¸øÏÂÒ»¸ö´°¿Ú
    window.addEventListener('message', receiveMessage);
    function receiveMessage(event) {
      event.source.postMessage('Nice to see you!', '*');
    }
</script>
<script>
    //¹ýÂ˲»ÊÇ·¢¸ø±¾´°¿ÚµÄÐÅÏ¢
    window.addEventListener('message', receiveMessage);
    function receiveMessage(event) {
      if (event.origin !== 'http://www.segmentfault.com/page1.html') return;
      if (event.data === 'Hello World') {
          event.source.postMessage('Hello', event.origin);
      } else {
        console.log(event.data);
      }
    }
</script>

Èý¡¢iframe

iframeÔØÈëÒ³ÃæºÍsrcÀïÃæµÄÄ¿±êÓòÊÇͳһ¸öÓò£¬ÊÇÄܹ»·¢Æðajax¿ÒÇ󣨸¸×Ó´°¿Ú£©¡£ //Ç°ÌáÊÇͬԴ£¬²»Ò»ÑùÔ´¾Í²»³ÉÒÔ·¢Æðajax¿ÒÇó¡£

²»Ò»Ñù´°¿ÚͬԴ֮¼äÊÇ¿ÉÒÔÁÔÈ¡window¶ÔÏ󣬵«ÊDz»¿Ë²»¼°ÁÔÈ¡window¶ÔÏóµÄÊôÐԺͰ취¡£ //²»Ò»ÑùÔ´»á±¨´í

1¡¢document.domain + iframe£¨Í¬Ô´¿ÉÓà -- ¿ç×ÓÓò£©

document.domainÊôÐÔ£º1¼¶ÓòÃûÀ×ͬ£¬¶þ¼¶ÓòÃû²»Ò»Ñù¿ÉÒÔʵÏÖwindow¶ÔÏóÁÔÈ¡¡£

Ò³ÃæÒ»£º"https://segmentfault.com/page1.html"
<script>
    window.onload = function() {
        document.domain = "https://segmentfault.com/";        //É趨domain
        window.getData = function() {
            //ajax¿ÒÇó
        }
    }
</script>
Ò³Ãæ¶þ£º"https://segmentfault.com/page2.html"
<iframe id="iframe" src="https://segmentfault.com/page1.html" onload="test()"></iframe>
<script>
    //¶¯Ì¬´´Á¢iframe×îºÃ£¬ÁÔÈ¡ÍêÊý¾ÝÉÕ»Ù¡£
    //document.domainÉ趨³É±¾Éí»ò¸ü¸ß1¼¶µÄ¸¸Óò£¬Ö÷Óò±ØÐèÀ×ͬ¡£
    document.domain = "https://segmentfault.com/"        //É趨domain
    function test() {
        var win = document.getElementById("iframe").contentWindow;
        win.getData("https://segmentfault.com/json_domain.php", function() {})
    }
</script>

ȱÏÝ£ºÖ÷ÓòÃûµÃÒ»Ö¡£

2¡¢window.name + iframe£¨·ÇͬԴ¿ÉÓã©

window.nameÊôÐÔ£ºÔÚÒ»¸ö´°¿ÚµÄÉúÃüÖÜÆÚÄÚ£¬²»¹Ü¿É·ñͬԴ£¬Í³Ò»¸ö´°¿ÚµÄÔØÈëÒ³Ãæwindow.nameÊôÐÔÊÇͬÏíµÄ£¬Ã¿¸öÒ³Ã涼¿ÉÒÔ²Ù×Ý¡£

Ò³ÃæÒ»£º"https://segmentfault.com/page1.html"
<script>
    window.name = "this is data!"
</script>
Ò³Ãæ¶þ£º"https://segmentfault.com/page2.html"
<iframe id="iframe" src="https://segmentfault.com/page1.html" onload="test()"></iframe>
<script>
    //¶¯Ì¬´´Á¢iframe×îºÃ£¬ÁÔÈ¡ÍêÊý¾ÝÉÕ»Ù¡£
    //ÁÔÈ¡window.name
    function test() {
        var winName = document.getElementById("iframe").contentWindow.name;
        winName.src = "https://segmentfault.com/data.html";        //×îºóÐèÒª½«iframeµÄsrcÉ趨³Éµ±Ç°ÓòµÄÒ»¸öÒ³ÃæµØÖ·
    }
</script>

ȱÏÝ£º¼æÈÝÐÔ²»ºÃ

3¡¢location.hash + iframe£¨·ÇͬԴ¿ÉÓã©

Ƭ¶Î±êʶ·û£ºÆ¬¶Î±êʶ·ûÊÇÖ¸url#ºÅºóÃæµÄ²¿·Ö¡£Ö»ÊǸĶ¯Æ¬¶Î±êʶ·ûÒ³Ã治ˢС£

Ò³ÃæÒ»£º"https://www.segmentfault.com/page1.html"
<script>  
    function startRequest(){
        var ifr = document.createElement('iframe');
        ifr.style.display = 'none';
        ifr.src = 'https://www.example.com/page2.html#messgae';
        document.body.appendChild(ifr);
    }
    
    function checkHash() {
        var data = location.hash ? location.hash.substring(1) : '';
    }
    setInterval(checkHash, 2000);
</script>
Ò³Ãæ¶þ£º"https://www.example.com/page2.html#messgae"
<script>
    function callBack(){
        try {
            parent.location.hash = 'somedata';
        } catch (e) {
            // ie¡¢chromeµÄƽ°²»úÖÆû·¨ÐÞ¸Äparent.location.hash£¬
            // ËùÒÔÒªÀûÓÃÒ»¸öÖÐÐĵÄexampleÓòϵĴúÀíiframe
            var ifrproxy = document.createElement('iframe');
            ifrproxy.style.display = 'none';
            ifrproxy.src = 'https:/www.segmentfault.com/page3html#somedata';    // ÁôÒâ¸ÃÎļþÔÚ"segmentfault.com"ÓòÏÂ
            document.body.appendChild(ifrproxy);
        }
    }
</script>
Ò³ÃæÈý£º"ttps:/www.segmentfault.com/page3html#somedata"
<script>
    //ÓÉÓÚparent.parentºÍ±¾ÉíÊôÓÚͳһ¸öÓò£¬ËùÒÔ¿ÉÒԸĶ¯Æälocation.hashµÄÖµ
    parent.parent.location.hash = self.location.hash.substring(1);
</script>

ȱÏÝ£ºÊý¾ÝÏÔ¶ÔÚurl£¬³¤¶ÈÒ²ÓÐÏÞÖÆ¡£

ËÄ¡¢WebSocket

WebSocket£ºÔĶÁÆ÷ͨ¹ý JavaScript ÏòЧÀÍÆ÷·¢³ö´´Á¢ WebSocket Á¬½ÓµÄ¿ÒÇó£¬Á¬½Ó´´Á¢½ñºó£¬¿Í»§¶ËºÍЧÀÍÆ÷¶Ë¾Í¿ÉÒÔͨ¹ý TCP Á¬½ÓÖ±½Ó½»Á÷Êý¾Ý¡£

É趨WebSocket¿ÒÇóÍ·ÐÅÏ¢£¬Ð§ÀÍÆ÷Ö§³Å¾Í¿ÉÒÔÍ£Ö¹¡£

Origin: http://example.com        //°´ÕÕÓòÃû¿É·ñÔÚ°×Ãûµ¥ÄÚÀ´ÍƶϿɷñ¿ÉÒÔͨѶ

ȱÏÝ£ºÊµÏֳɱ¾¸ß¡£

Îå¡¢CORS

corsÊÇ¿çÓò×ÊÔ´·ÖÏí¡£ÏÖCORSͨѶµÄ¹Ø¼üÊÇЧÀÍÆ÷¡£Ö»ÒªÐ§ÀÍÆ÷ʵÏÖÁËCORS½Ó¿Ú£¬¾Í¿ÉÒÔ¿çԴͨѶ¡£

ȱÏÝ£ºÐ§ÀÍÆ÷ÅäÖã¬Õ¼ÓÃÖ÷Óò´ø¿í¡£

±¾ÆªÎÄÕµ½ÕâÀï¾ÍÒѾ­È«²¿Íê±ÏÁË£¬¸ü¶àÆäËû³öÉ«ÄÚÈÝ¿ÉÒÔ¹Ø×¢PHPÖÐÎÄÍøµÄJavaScriptÊÓƵ½Ì³ÌÀ¸Ä¿£¡

ÒÔÉϾÍÊÇJavaScript¿çÓòµÄ½â¾ö·½Ê½×ܽᣨ´úÂ룩µÄ¾ßÌåÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢°Ù·Ö°ÙÔ´ÂëÍøÆäËüÏà¹ØÎÄÕ£¡

´òÉÍ

´òÉÍ

È¡Ïû

¸ÐлÄúµÄÖ§³Ö£¬ÎÒ»á¼ÌÐøŬÁ¦µÄ!

ɨÂëÖ§³Ö
ɨÂë´òÉÍ£¬Äã˵¶àÉپͶàÉÙ

´ò¿ªÖ§¸¶±¦É¨Ò»É¨£¬¼´¿É½øÐÐɨÂë´òÉÍŶ

°Ù·Ö°ÙÔ´ÂëÍø ½¨Òé´òÉÍ1¡«10Ôª£¬ÍÁºÀËæÒ⣬¸ÐлÄúµÄÔĶÁ£¡

¹²ÓÐ151ÈËÔĶÁ£¬ÆÚ´ýÄãµÄÆÀÂÛ£¡·¢±íÆÀÂÛ
êdzƣº ÍøÖ·£º ÑéÖ¤Â룺 µã»÷ÎÒ¸ü»»Í¼Æ¬
×îÐÂÆÀÂÛ

±¾ÎıêÇ©

¹ã¸æÔÞÖú

ÄܳöÒ»·ÖÁ¦ÊÇÒ»·Ö°É£¡

¶©ÔÄ»ñµÃ¸ü¶àÄ£°å

±¾ÎıêÇ©

¹ã¸æÔÞÖú

¶©ÔÄ»ñµÃ¸ü¶àÄ£°å