2012-06-12 3 views
1

Firefox 부가 기능에서이 웹 사이트의 버튼 URL에 HTTPRequest를 보내고 싶습니다 : www.google.com/ads/preferences. 내가하려는 것은 버튼이 포함 된 양식을 가져 와서 작업 속성에 HTTP 요청을하는 것입니다 (목표는 서버에서 보내는 doubleclick 쿠키를 얻는 것입니다). 문제는 그 양식을 얻을 때 내가 XRayWrapper를 얻을 내가 (이미 할 시도한 그 속성을 검색하는 방법을 모르는 :이 XRayWrapper에서 콘텐츠를 얻는 방법은 무엇입니까?

또한
// unwrap is not available on older branches (3.5 and 3.6) - Bug 533596 
if (XPCNativeWrapper && "unwrap" in XPCNativeWrapper) { 
try { 
    return XPCNativeWrapper.unwrap(thing); 
} catch(e) { 
    // Unwrapping will fail for JS literals - numbers, for example. Catch 
    // the exception and proceed, it will eventually be returend as-is. 
} 
} 

if (thing['wrappedJSObject']) { 
return thing.wrappedJSObject; 
} 

, 내가 얻을 때 것으로 나타났습니다 id = "content-pane"인 div, 즉 innerHTML에 대한 양식과 액세스가 포함 된 div는 공백 문자열을 갖지만, 다른 애드온 인 firebug로 이러한 내용을 볼 수 있기 때문에 가능해야합니다. 당신의 도움에 대한

정말 잃었어요, 감사

편집! I는 현재 부가 기능 SDK를 사용하고, 그래서 내가 처리 할 수있는 페이지 노동자를 생성 이 모든 :

createDoubleClick: function() { 
    new PageWorker.Page({ 
     contentURL: "http://www.google.com/ads/preferences", 
     contentScriptFile: data.url('contentScripts/getCookie.js'), 
     contentScriptWhen: "end", 
     onMessage: function(message) {  
     console.log(message);         
     }          
    });     
} 

다음, contetScript에서 나는 DOM을 얻으려고 :

// Get button 
var idPanel = "content-pane"; 

// Get content panel 
var panel = document.getElementById(idPanel); 

console.log(panel.innerHTML); 

결과 :

info: 

답변

3

당신이 래퍼를 것입니다 제거 할 것이다 유일한 시나리오 웹 페이지의 JavaScript 코드와 상호 작용하기를 원하는 확장 기능이어야합니다. 심지어 일지는 의심 스럽습니다. 이 특정 시나리오에서는 확실히하지 말아야합니다. XrayWrapper (이전의 XPCNativeWrapper)는 security layer meant to protect your extension입니다.

var url = form.getAttribute("action"); 

을이 호출 후 아무것도 반환하지 않는 경우 시도 할 때 가장 가능성이 단순히 action 속성이 설정되지 않은 : 당신은 일반적으로 그것을 할 것처럼 당신은 여전히 ​​모든 DOM 메소드를 액세스하고 그것을 통해 속성 수 그것을 액세스하십시오. 더 오래 기다려야 할 수도 있습니다. DOMContentLoaded 대신 load 이벤트 처리기에서 코드를 실행하십시오 (현재 내가 현재 수행중인 작업을 분명히 알지 못합니다).

+0

먼저 답장을 보내 주셔서 감사합니다. 나는 실제로 내가하고있는 것을 더 편집하고 설명했다. 보시다시피, 나는 "contentScriptWhen :"end ""을 사용하여 작업자를 실행합니다. 그러면이 객체가 이미로드되어 있어야한다고 가정하지만 패널의 innerHTML을 얻을 때 콘솔을 통해 아무 것도 얻지 못합니다. – synack

+0

이 모든 목표는 브라우저에로드 된 httprequest에서 쿠키를 얻는 것입니다. – synack

+0

@ Kits89 : 페이지가로드됩니다. 하지만 그 내용이 동적으로 생성되고 있습니다. 제대로 볼 수 있다면'load' 이벤트 핸들러에서 볼 수 있습니다. 전체 코드를'setTimeout (function() {...}, 0)'에 넣으면 (최소한으로 지연 시키십시오) 작동해야합니다. –

관련 문제