可以使用 chrome 扩展将 HTML 标记添加到网站吗?
Posted
技术标签:
【中文标题】可以使用 chrome 扩展将 HTML 标记添加到网站吗?【英文标题】:Can HTML markup be added to a website using a chrome extension? 【发布时间】:2015-02-01 18:20:48 【问题描述】:我正在尝试创建一个 Chrome 扩展程序,该扩展程序创建一个像普通按钮一样的按钮,该按钮显示我制作的自定义页面(这已经完成并适用于我的扩展程序)但是我想做的下一件事,我不知道如何实现,是将标记注入特定网页...
这是我的 manifest.json:
"manifest_version": 2,
"name": "BattleNetwork",
"description": "Your onestop BattleNetwork info center!",
"version": "1.0",
"browser_action":
"default_icon": "icon.png",
"default_popup": "popup.html"
,
"permissions": [
"http://robloxdatabase.x10.bz/"
]
相当标准。我知道“内容脚本”(https://developer.chrome.com/extensions/content_scripts)但是,我不确定这些是否适合我想要的,我希望注入以下 HTML:
<div class="games-list-container overflow-hidden" id="GamesListContainer20" data-sortfilter="0" data-gamefilter="1" data-minbclevel="0" style="height: 258px; cursor: auto;">
<div class="games-list-header games-filter-changer">
<h2>Battle Network</h2>
</div>
<div class="show-in-multiview-mode-only">
<div class="see-all-button games-filter-changer btn-medium btn-neutral">
See All
</div>
</div>
<div class="games-list">
<div class="show-in-multiview-mode-only">
<div class="horizontally-scrollable" style="height: 168px; left: 0px;">
<div class="game-item">
<div class="always-shown">
<a class="game-item-anchor" rel="external" href="/Battle-Network-Transit-Hub-place?id=147893516">
<span class=""><img class="game-item-image" src="http://t1.rbxcdn.com/d36424dceab83ed45eb7b4fab8e97c15"></span>
<div class="game-name notranslate">Battlenetwork Hub</div>
</a>
<span class="online-player roblox-player-text" style="float: left"></span>
<div class="show-on-hover-only deemphasized hidden">
<div class="creator-name notranslate">
by <a href="/User.aspx?ID=56766433">Battlenetwork</a>
</div>
</div>
</div>
</div>
</div>
<div class="scroller prev hidden">
<div class="arrow">
<img src="http://images.rbxcdn.com/bf9c0660cdeb6283b71aa9237716519e.png">
</div>
</div>
<div class="scroller next">
<div class="arrow">
<img src="http://images.rbxcdn.com/ab6e44a9d9ebfde2244da961275acd06.png">
</div>
</div>
</div>
<div class="ad-spacer"></div>
</div>
</div>
...在网站“http://www.roblox.com/games/”上带有id="GamesListsContainer"
的部门顶部
这可能吗?有什么建议吗?同样,这是在 Chrome 扩展程序中,我有 popup.html 和其他东西。
【问题讨论】:
恐怕你必须用 JS 构建标记并使用 content_script。 我已经不止一次地看到其他插件修改了同一个网站,也许他们用java脚本做了同样的事情,这是可能的。我是否能够编写一个 javascript 来使用 HTML 标记注入一个字符串或类似的东西,然后用 content_script 注入它? 糟糕,前段时间我对这一点进行了研究。我还阅读了很多 CRX 的源代码,每个人都在使用 content_script 并注入到 DOM。据我所知,很遗憾,答案是否定的。 我的意思是,你可以用 JS 构建 HTML 结构并注入,但你不可能请求一个 HTML 文件并注入到页面中。此外,它是被禁止的,因为您必须面对 CORS 政策。 我正在从一个插件读取 CRX 上的代码,该插件的功能与我想做的类似,它在 roblox.com 的另一个页面上附加了一些 HTML 标记,也许我可以将其用作自己写的例子? 【参考方案1】:曾经我也想知道你的问题,并且已经阅读了很多 CRX 的源代码。但最后我发现他们都使用相同的方法:用 JS 构造 HTML,并通过 content_script 注入到页面。与 browser_action 的“弹出”不同,似乎没有办法将 HTML 存储到 .html 文件并包含到页面中。
还有一件事,如果你想使用 XHR 在你的 CRX 中请求一个 .html,它可能会因为 CORS 策略而失败。 CRX 有像 chrome-extension://... 这样的特殊来源,这显然是与 http 或 https 的交叉来源。
【讨论】:
以上是关于可以使用 chrome 扩展将 HTML 标记添加到网站吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 HTML5 WebSockets 用于 Chrome 扩展
如何将 PayPal 智能按钮添加到 Chrome 扩展程序?