Javascript 如何从这个x光包装器中获取内容?

Javascript 如何从这个x光包装器中获取内容?,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,在firefox插件中,我想向此网站中按钮的URL发送一个HTTPRequest:。 我尝试做的是获取包含按钮的表单,并向action属性发出HTTP请求(目标是获取双击cookies,如果您这样做,服务器会发送这些cookies)。问题是,当我得到表单时,我得到了一个XRayWrapper,我不知道如何检索该属性(我已经尝试过: // unwrap is not available on older branches (3.5 and 3.6) - Bug 533596 if (XPCNati

在firefox插件中,我想向此网站中按钮的URL发送一个HTTPRequest:。 我尝试做的是获取包含按钮的表单,并向action属性发出HTTP请求(目标是获取双击cookies,如果您这样做,服务器会发送这些cookies)。问题是,当我得到表单时,我得到了一个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;
}
此外,我还发现,当我获取包含表单和对innerHTML的访问的id=“content pane”的div时,会得到一个空字符串。但这必须是可能的,因为我可以使用firebug(另一个附加组件)查看这些内容

我真的迷路了,谢谢你的帮助

编辑:我正在使用附加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: 

您希望删除该包装的唯一场景是希望与网页的JavaScript代码交互的扩展,即使这样,您是否应该这样做也是值得怀疑的。在这个特定场景中,您绝对不应该这样做。XrayWrapper(以前称为XPCNativeWrapper)是。您仍然可以通过它访问任何DOM方法和属性,就像您通常所做的那样:

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

如果此调用没有返回任何内容,则在您尝试访问它时很可能没有设置
操作
属性。您可能需要等待更长的时间,例如,在
加载
事件处理程序中运行代码,而不是在
DOMContentLoaded
中运行代码(显然,我不知道您当前正在做什么).

首先,感谢您的快速响应。我编辑并描述了更多我实际正在做的事情。如您所见,我使用“contentScriptWhen:”end“”执行worker,我假设应该已经加载了,但是当我获取面板的innerHTML时,我没有通过控制台获取任何内容。所有这些的目标是从浏览器中加载的httprequest中获取Cookie。@Kits89:页面将被加载,当然。但是如果我正确地理解它。如果您将整个代码放入
setTimeout(function(){…},0)
(最小限度地延迟),那么它应该可以工作。