gpt4 book ai didi

javascript - 检测是否启用了 chrome 面板

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

我想检测是否在 chrome 和 javascript 中启用了面板。

目前,您可以使用以下代码创建面板:

chrome.windows.create({ url: "[url]", width: 500, height: 516, type: 'panel'});

当 chrome 中的面板被禁用时,它会打开一个弹出窗口。但问题是面板并未在每个 chrome 版本上启用。但人们可以在 chrome://flags 上手动启用它。因此,当标记被禁用时,我想将人们重定向到该页面,以便他们可以启用面板。

最佳答案

您可以使用 chrome.windows.create 的回调中的 alwaysOnTop bool 属性检测打开的窗口是否是面板:

chrome.windows.create({
url: '...url...', // ...
type: 'panel'
}, function(windowInfo) {
// if windowInfo.alwaysOnTop is true , then it's a panel.
// Otherwise, it is just a popup
});

如果要检测标志是否启用,创建窗口,读取值,然后将其删除。由于创建过程是异步的,因此必须使用回调来实现值检索。

var _isPanelEnabled;
var _isPanelEnabledQueue = [];
function getPanelFlagState(callback) {
if (typeof callback != 'function') throw Error('callback function required');
if (typeof _isPanelEnabled == 'boolean') {
callback(_isPanelEnabled); // Use cached result
return;
}
_isPanelEnabledQueue.push(callback);

if (_isPanelEnabled == 'checking')
return;

_isPanelEnabled = 'checking';
chrome.windows.create({
url: 'about:blank',
type: 'panel'
}, function(windowInfo) {
_isPanelEnabled = windowInfo.alwaysOnTop;
chrome.windows.remove(windowInfo.id);

// Handle all queued callbacks
while (callback = _isPanelEnabledQueue.shift()) {
callback(windowInfo.alwaysOnTop);
}
});
}
// Usage:
getPanelFlagState(function(isEnabled) {
alert('Panels are ' + isEnabled);
});

因为标志只能通过重新加载 Chrome 浏览器来切换,所以缓存标志的值是有意义的(如函数中所示)。为确保窗口创建测试只发生一次,回调会排队。

关于javascript - 检测是否启用了 chrome 面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13630789/

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