gpt4 book ai didi

javascript - 如何从 Chrome 扩展程序访问所有窗口对象?

转载 作者:搜寻专家 更新时间:2023-11-01 04:43:34 24 4
gpt4 key购买 nike

我正在为工作开发一个 Chrome 扩展程序,它需要做的一件事是读取(仅读取,而不是修改)我们在向我们的服务器发出异步请求后发回网站的对象。基本上我需要阅读 window.<our object name>对象并获取其中的内容。

现在,我知道这是可能的,因为我是在我编写的 Tampermonkey 脚本中完成的。我能够 console.log(window.<our object name>)它进来了。

Tampermonkey 是一个 Chrome 扩展程序,因此没有内在原因可以访问某些内容而另一个扩展程序不能。

但是当我尝试从内容脚本和注入(inject)代码访问这个对象时,我什么也得不到。当我得到 window只有对象,它只出现了一部分,就好像扩展对它的某些部分是盲目的一样。但如果我在页面的控制台中,我会调用 window ,我得到一个完整的窗口对象。真气。

因此,如果内容脚本不起作用,注入(inject)脚本也不起作用,并且弹出脚本在这里没有任何用处,那么如何做到这一点呢?

非常感谢!

更新:根据要求,这里是 manifest.json(我以 page_redder 为例并对其进行了处理以确保我没有犯任何奇怪的错误):

{
"name": "Page Redder",
"description": "Make the current page red",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "get my object"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"manifest_version": 2
}

这是 content.js:

var getWindow = window.setTimeout(function() { console.log("From content script: " + window.<OBJECT NAME>); }, 5000);

这里是 background.js:

// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
// No tabs or host permissions needed!
chrome.tabs.executeScript({
code: 'console.log("From injected script:" + window.<OBJECT NAME>);'
});
});

运行时,我得到:

来自内容脚本:未定义来自注入(inject)的脚本:未定义

但是如果我做 window.从控制台,我明白了。我什至添加了超时以确保内容脚本不会尝试获取尚未加载的内容。但是我可以在脚本运行之前手动检索对象,它仍然给我未定义的。

最佳答案

Soo,这有点 hacky,但我能够做到并且成功了。

为了访问主机 window 可用的所有内容,我必须创建一个 script 元素,将我想要的所有代码放在那里,然后添加 document.body.appendChild(script) 让它工作。

这不是最性感的做事方式,但它可以完成小任务。

关于javascript - 如何从 Chrome 扩展程序访问所有窗口对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36672980/

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