gpt4 book ai didi

javascript - 如何从此 XRayWrapper 获取内容?

转载 作者:行者123 更新时间:2023-11-30 13:18:55 25 4
gpt4 key购买 nike

在 firefox 附加组件中,我想向此网站中按钮的 URL 发送 HTTPRequest:www.google.com/ads/preferences .我尝试做的是获取包含按钮的表单并向 action 属性发出 HTTP 请求(目标是获取服务器在执行此操作时发送的双击 cookie)。问题是,当我得到表单时,我得到了一个 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,所以我创建了一个页面 worker 来处理所有这些:

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)是一个 security layer meant to protect your extension .您仍然可以通过它访问任何 DOM 方法和属性,就像您通常那样:

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

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

关于javascript - 如何从此 XRayWrapper 获取内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10992517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com