복붙노트

[JQUERY] 어떻게 응답을 반환하기 전에 렌더링 할 페이지 기다릴 AJAX를 GET 요청을 얻으려면?

JQUERY

어떻게 응답을 반환하기 전에 렌더링 할 페이지 기다릴 AJAX를 GET 요청을 얻으려면?

해결법


  1. 1."페이지에 대한 대기가 렌더링 될"에 AJAX get 및 위해서는, 실제로 완전히 가져 오는 및 포함 된 CSS와 자바 스크립트 파일을 모두 실행 페이지를 처리 ​​할 수있을 것입니다. 즉 쉽고하지 않는 것이 좋습니다 아니다. 다행히, 당신은 어쨌든 할 필요가 없습니다.

    "페이지에 대한 대기가 렌더링 될"에 AJAX get 및 위해서는, 실제로 완전히 가져 오는 및 포함 된 CSS와 자바 스크립트 파일을 모두 실행 페이지를 처리 ​​할 수있을 것입니다. 즉 쉽고하지 않는 것이 좋습니다 아니다. 다행히, 당신은 어쨌든 할 필요가 없습니다.

    다음은 이러한 종류의 문제에 접근하는 세 가지 더 나은 방법은 다음과 같습니다 :

    그리스 몽키 스크립트는 일반 페이지에서 모두와 iframe을 내 페이지에 게재됩니다. 사실, 당신은 같은 스크립트가 모두 실행하고 여러 도메인에 설정할 수 있습니다.

    마스터 페이지 및 페이지에서 iframe 자원 모두 GM 스크립트 (들)을 실행하는 경우, 스크립트 인스턴스 PostMessage를을 이용하여 서로 교차 도메인과 통신 할 수있다 ().

    예를 들어, 우리가 여행 데이터가 포함 된 사이트 fiddle.jshell.net/9ttvF/show을 가지고 가정, 우리는 매쉬업하기 위해 해당 사이트를 자원 사이트, jsbin.com/ahacab에서 데이터를 일치하는 원하는, 그 AJAX를 사용 페이로드 데이터를 얻을 수 있습니다.

    대상 (마스터) 사이트는 다음과 같습니다 :

    자원 사이트 외모는 처음에는이 같은 :

    다음과 같이 완료 :

    다음 스크립트 :

    // ==UserScript==
    // @name     _Cross-site, AJAX scrape demo
    // @include  http://fiddle.jshell.net/9ttvF/show/
    // @include  http://jsbin.com/ahacab*
    // @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
    // @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
    // @grant    GM_addStyle
    // ==/UserScript==
    
    if (/fiddle\.jshell\.net/i.test (location.host) ) {
        console.log ("***Master-page start...");
    
        /*--- Inform the user.
        */
        $("#plainResults").before (
            '<div id="gmFetchRez">Greasemonkey is fetching results from jsbin.com...</div>'
        );
    
        /*--- Setup to process messages from the GM instance running on the iFrame:
        */
        window.addEventListener ("message", receiveMessage, false);
    
        /*--- Load the resource site in a hidden iframe.
        */
        $("body").append ('<iframe src="http://jsbin.com/ahacab" id="gmIframe"></iframe>');
    }
    else {
        console.log ("***Framed start...");
        /*--- Wait for the AJAXed-in content...
        */
        waitForKeyElements ("#results table.rezTable", sendResourcePageData);
    }
    
    function sendResourcePageData (jNode) {
        console.log ("Results found!  Sending them to the main window...");
    
        window.top.postMessage (jNode.html(), "*");
    }
    
    function receiveMessage (event) {
        if (event.origin != "http://jsbin.com")     return;
    
        $("#gmFetchRez").html (event.data);
    }
    
    //--- Use CSS to control appearances.
    GM_addStyle ( "                                 \
        #gmIframe {                                 \
            display:            none;               \
        }                                           \
        #gmFetchRez {                               \
            background:         lightYellow;        \
            border:             3px double red;     \
            padding:            1em;                \
        }                                           \
    " );
    

    스크립트를 설치하고 실행하는 최종 결과의 모습이 좋아 :

  2. from https://stackoverflow.com/questions/11486256/how-to-get-an-ajax-get-request-to-wait-for-the-page-to-be-rendered-before-return by cc-by-sa and MIT license