2012-06-02 2 views
2

Chrome과 Firefox 확장 프로그램이 있으며 Safari에서도 동일한 기능을 제공하고 있습니다.Safari Extension의 iFrame "Popover"

이러한 플러그인에는 모두 팝업이 있습니다. 즉, 클릭하는 아이콘과 페이지가 열립니다. 내 Chrome 확장 프로그램 팝업은 iFrame이있는 te 플러그인 폴더의 HTML 페이지를 엽니 다. FF 확장은 팝업을 위해 서버의 PHP 페이지에 직접 링크됩니다.

Chrome을 사용하여 수행 한 사파리와 관련이 있습니다. 서버의 페이지에 iFrame이있는 로컬 HTML 페이지를 만들어야합니다. Chrome에서 작동하지만 Safari의 iFrame은 그냥 비어 있습니다. 어떤 도움

감사합니다 ...

+0

제발 ... 누구? –

+0

저는 Apple이 popovers가 확장 프로그램에 로컬이 아닌 다른 것을로드하지 못하도록 차단했다고 생각합니다. 여하튼, popover에서 웹 페이지를로드하려고 시도 할 때 나는 당신보다 더 운이 없었습니다. – canisbos

답변

4

애플은 Iframe을하지만 ... 팝 오버 내에서로드 할 수 없습니다! XMLhttpRequest를 모든 도메인에 사용할 수 있습니다 (지금은 무엇이라고 말합니까?). 예 모든 도메인에 XMLhttpRequest. 예 :

나는 (내가 확장에 jQuery를 또는 Mootools의를로드하지 않았기 때문에) 내 선택기이 사용

function $(element) { 
    return document.getElementById(element); 
} 

그리고 단지는 XMLHttpRequest를 너무 좋아해요 :

http = new XMLHttpRequest(); 
http.open('get', 'http://yoursitehere.com/extension/'); 
http.onreadystatechange = function() { 
    $('target-div-id').innerHTML = http.responseText; 
} 

이렇게하면 대상 div를 HTML로 채울 수 있습니다.

+0

감사합니다 !!! 나는 이런 생각을하고있었습니다. 어쨌든 내 서버에는 CORS (Cross Origin Requests)가 있습니다. 하지만 Safari가 도메인에 대한 요청을 허용한다는 것을 알지 못했습니다. : O –

+0

한 가지 더 ... iFrame을 사용하지 않고 데이터를 페이지로 다시 보내려면 어떻게해야합니까? –

+1

데이터 만 요청할 수 있습니다. 따라서 popover에 컨텐츠를 추가하려면 GET/POST 요청을 수행하고 응답을 popover의 컨텐츠 어딘가에 배치해야합니다. 그러나 도메인/페이지로 데이터를 보내려면 요청과 함께 무언가를 수행하고 응답을 반환해야합니다. –