嗨,我正在尝试制作一个 Google chrome 扩展程序,该扩展程序将在浏览器上有一个按钮,单击该按钮时将打开一个带有此站点的气泡弹出窗口http://www.visualbounds.com/Private/XboxMB/Chatbox/ 。但我是新来的,当我尝试使用 iframe 时,弹出窗口中没有任何内容。
所以我想我是在问如何将网站嵌入到弹出窗口中?
如果有帮助的话,这是manifest.json。
{
"browser_action": {
"default_icon": "Images/16.png",
"default_popup": "popup.html"
},
"background": {
"persistent": false,
"scripts": [ "background.js" ]
},
"content_scripts": [ {
"js": [ "jquery.js", "script.js" ],
"matches": [ "https://www.xboxmb.com/*" ],
"run_at": "document_start"
},{ "matches": ["http://*/*", "https://*/*" ],
"all_frames": true,
"js": ["content.js"]
}
],
"description": "Chat intergration for XboxMB",
"icons": {
"16": "Images/16.png",
"48": "Images/48.png"
},
"manifest_version": 2,
"name": "XboxMB Chatbox",
"options_page": "options.html",
"version": "2.2",
"permissions": [
"http://www.visualbounds.com/Private/XboxMB/Chatbox/mobile.html"
]
}
这是 popup.html
<!doctype html>
<html>
<head>
<style type="text/css">
body {width:200; height:300;}
</style>
</head>
<body>
<iframe src="http://www.visualbounds.com/Private/XboxMB/Chatbox/mobile.html" width="100%" height="100%" frameborder="0">
</iframe>
</body>
</html>
任何帮助将不胜感激。
亲切的问候
-肖恩
首先你需要在manifest.json中指定默认的弹出目标
{
"manifest_version": 2,
"name": "xbox",
"description": "xbox description",
"version": "2.2",
"browser_action": {
"default_popup": "main.html"
}
}
只需插入一个 iframe 元素
<iframe src="http://www.visualbounds.com/Private/XboxMB/Chatbox/mobile.html" width="320" height="480"></iframe>
您将在弹出窗口中看到嵌入的 iframe。
使用 iframe 嵌入像您在 Chrome 扩展弹出窗口中提到的网站可能具有挑战性,特别是如果该网站设置了 X-Frame-Options 或 Content-Security-Policy 标头以防止在 iframe 中加载。以下是解决此问题的方法:
检查 X-Frame-Options 或 Content-Security-Policy: 使用浏览器开发人员工具(F12 -> 网络选项卡)查看您要嵌入的网站是否具有 X-Frame-Options: SAMEORIGIN 等标头或阻止 iframe 的 Content-Security-Policy。如果存在这些,由于浏览器安全限制,您无法直接将网站嵌入 iframe 中。
解决方法选项:
在新选项卡中重定向:单击按钮时将用户重定向到新选项卡中,而不是嵌入网站。 代理服务器:设置代理服务器来获取网站内容并提供服务,而无需限制性标头。请注意,此方法需要服务器端开发并遵守网站的服务条款。 API 集成:如果网站提供 API,请将它们直接集成到您的扩展中以检索和显示必要的数据。 iFrame 的弹出窗口基础知识: 如果网站没有限制性标头,您可以在弹出窗口中使用 iframe。这是一个例子:
manifest.json:
json
Copy code
{
"manifest_version": 3,
"name": "Embed Popup Example",
"version": "1.0",
"action": {
"default_popup": "popup.html"
}
}
popup.html:
html
Copy code
<!DOCTYPE html>
<html>
<head>
<title>Popup</title>
<style>
iframe {
width: 400px;
height: 300px;
border: none;
}
</style>
</head>
<body>
<iframe src="http://www.visualbounds.com/Private/XboxMB/Chatbox/"></iframe>
</body>
</html>
要点:
确保 popup.html 在清单的 default_popup 字段中定义。 如果网站阻止 iframe 使用,则 iframe 将保持空白。 如果直接 iframe 方法由于限制而失败,您可能需要探索上述替代选项或寻找允许嵌入的类似网站。 我为我的网站PC Bottleneck Calculator实现了类似的方法,并且它运行得很好。通过使用 iframe 将网站嵌入到弹出窗口中,我能够毫无问题地实现所需的功能。事实证明,这种方法是有效的,前提是目标站点没有 X-Frame-Options 或 Content-Security-Policy 等阻止 iframe 使用的限制。