2010-06-21 5 views
2

Google AJAX Feed API를 사용하여 RSS 피드를 검색하고 있습니다. 아래 예제 1의 HTML 문서의 머리 부분에서 javascript를 실행할 때 작동합니다 (아무런 결과도 얻지 못한다는 것을 알고 있지만 다른 날에는 문제가 있습니다!).하지만 실제로 모든 것을로드 할 때 실행해야합니다. 나는 jquery를 사용하고 있으므로 $ (window) .load (function() {}); 메서드를 사용하지만 거기에 Google 코드를 실행하면 작동하지 않습니다 (예 2). 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?

예 1 - index.html을

<head> 
<script type="text/javascript"> 
console.debug("before google load code"); 
google.load("feeds", "1"); 
console.debug("after google load code"); 
google.setOnLoadCallback(loaded); 
function loaded() { 
    console.debug("google loaded"); 
    google.feeds.findFeeds("news", feedSearchDone); 
} 
function feedSearchDone(result) { 
    if (result.error || result.entries.length <= 0) { 
       console.debug("No Results Found"); 
       return; 
      } 
    else { 
     console.debug(result.entries[0].url); 
} } 
</script> 
</head> 

예 1 - code.js

$(window).load(function() { 
    console.debug("in jquery load function"); 
}); 

예 1 - 파이어 버그 출력 :

before google load code 
after google load code 
in jquery load function 
google loaded 
No Results Found 

예 2 - code.js

$(window).load(function() { 

    console.debug("in jquery load function"); 

    console.debug("before google load code"); 
    google.load("feeds", "1"); 
    console.debug("after google load code"); 
    google.setOnLoadCallback(loaded); 

    function loaded() { 
     console.debug("google loaded"); 
     google.feeds.findFeeds("news", feedSearchDone); 
    } 

    function feedSearchDone(result) { 
     if (result.error || result.entries.length <= 0) { 
        console.debug("No Results Found"); 
        return; 
       } 
     else { 
     console.debug(result.entries[0].url); 

    } } 
}); 

예 2 - 방화범 출력

in jquery load function 
before google load code 
window.loadFirebugConsole is not a function 
[Break on this error] <html lang="en"> 

오류가 방화범을 말한다하더라도 그것은 페이지 (어떤 요소가 화면에 없음) 내가 볼 때 동일하게 동작하기 때문에, 난 그 원인 생각하지 않습니다 그것은 사파리에서. 읽어 주셔서 감사합니다.

답변

3

JQuery onload는 Google onLoad 콜백 이후에만 사용할 수 있습니다.

function initialize() { 
    $(function() { 
     // Some other code here 
    }); 
} 
google.setOnLoadCallback(initialize); 

code.js 파일에 추가해보십시오. 구글 라이브러리 API 상태 google.load를 사용하는 대신에

+0

감사합니다. jquery를 처음 사용하는 경우 초기화 함수에서 결과 객체를 어떻게 받아 들일 수 있습니까? – ben

+0

죄송합니다. 제 질문은 말이되지 않습니다. – ben

0

$ doc.ready 위에 jquery가 포함되어 있습니까?

+0

"예 2 - 방화범 출력"의 "jquery load function"행은 나에게 jquery가 정상적으로 작동합니까? jquery에 익숙하지 않은데 잘못되었을 수 있습니다. – ben

1

대신 $(document).ready을 사용해야하며 스크립트는 DOMLoad가 완료된 후에 만로드됩니다.

+0

I t ried this하지만 나는 같은 오류가 나타납니다. 이것이 문제라고 확신하지 않습니다. "예제 2 - 방화범 적출량"의 "jquery load function"줄이 거기에서옵니다. – ben

+0

이 스크립트를 동적으로로드하고 있습니까? 그렇다면로드 될 때까지 기다려야합니다. 다음은 http://stackoverflow.com/questions/3084371/lazy-loading-a-plugin-jquery/3084435#3084435 예입니다. 이상한 점은 google.setOnCallBack 기능을 이미 사용하고 있으며 작동하지 않는다는 것입니다. 트릭을 할 수있는 링크. – BrunoLM

0

:.

기본 방법은 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 같이 (표준 태그를 통해 라이브러리를로드하는 것입니다, 가장 빠른 부하가 발생합니다

좋은 점은 google.setOnLoadCallback을 설정하지 않아도되고 라이브러리가 페이지로드시 사용 가능하다는 것입니다.

관련 문제