如何将 HTML/JS 插入由 chrome.windows.create 创建的窗口(“面板”类型)?

Posted

技术标签:

【中文标题】如何将 HTML/JS 插入由 chrome.windows.create 创建的窗口(“面板”类型)?【英文标题】:How to insert HTML/JS into window (of type "panel") created by chrome.windows.create? 【发布时间】:2013-05-19 08:50:27 【问题描述】:

我正在使用 chrome.windows.create 在 Chrome 扩展程序中创建一个窗口。它的类型为panel,因此它不是常规的浏览器窗口或选项卡,而是浮动在所有其他窗口之上的独立窗口。创建它之后,我现在需要在其中插入一些 htmljavascript。那么这是怎么做到的呢? create 返回了一个 Window 对象,但它没有有用的钩子——只有几个属性。文档中没有任何内容建议如何做到这一点,而且我在任何地方都看不到它的 DOM 树。

有什么想法吗?

非常感谢!

【问题讨论】:

这个错误正在code.google.com/p/chromium/issues/detail?id=319270进行跟踪 @zhaojing OP 已经解决了他们的问题,你的用例是什么? 【参考方案1】:

经过更多的阅读和实验,我找到了答案:创建窗口时,您需要创建一个选项卡并将其附加到窗口。因此,您创建的createData 对象将包含一个 URL 属性,该属性仅指向位于(默认情况下)扩展的根文件夹中的 HTML 页面(使用 CSS、JS,无论您想要什么)(因此,如果您想要您的 HTML 文件保存在其他地方,只需在文件名前加上路径)。现在,当创建窗口时,它使用一个选项卡创建(从 UI 的角度来看,它甚至不显示为选项卡 - 这很好)并且该选项卡包含您想要的内容。

【讨论】:

【参考方案2】:

试试这个我自己没有测试过,但可能会给你一些想法......

(函数() chrome.windows.create( 类型:“面板”, 网址:“https://www.google.co.in/” ,函数(新窗口) 控制台.log(新窗口); chrome.tabs.executeScript(newWindow.tabs[0].id, 代码:'document.write("hello world");' ); ); )()

正如Chromium Projects link about panels 中提到的,您可以像其他窗口类型一样操作窗格。

【讨论】:

以上是关于如何将 HTML/JS 插入由 chrome.windows.create 创建的窗口(“面板”类型)?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 html/js 在 Firefox 中禁用 Pip(画中画)?

使用jspdf将HTML和图像转换为pdf

如何将 UITextView 插入 UIImageView

Blazor Webassembly:如何将组件插入字符串

如何将标签栏控制器插入情节提要?

如何检索由 MySQL 事件插入的记录的 id