小编rpm*_*ion的帖子

是否有可互操作的浏览器扩展对象的@types?

我正在使用 Typescript 创建一个与EdgeChromeFirefox兼容的浏览器扩展。

我找到了一篇讨论可互操作的浏览器扩展的文章,其中包含此代码的示例:

window.browser = (function () {
  return window.msBrowser ||
    window.browser ||
    window.chrome;
})();
Run Code Online (Sandbox Code Playgroud)

因此,我计划创建一个 Browser 类并根据扩展程序所在的浏览器初始化一个属性。类似于下面的代码:

export class Browser {
    constructor() {}

    public _browser: object = null;
    get browser() : object {
        if (typeof window.chrome !== 'undefined') {
            this._browser = window.chrome;
        }

        if (typeof window.browser !== 'undefined') {
            this._browser = window.browser;
        }
        return this._browser;
    }
}
Run Code Online (Sandbox Code Playgroud)

我能够为 chrome 定义添加 @types/chrome ,这样我就不会抛出异常,但是,我找不到任何类型browsermsBrowser对象定义。或者我可以使用任何建议来执行此操作,而不会在 Typescript 中出现错误。

所以我的问题是我可以使用任何类型定义来支持browser ormsBrowser对象吗?

types cross-browser browser-extension typescript

9
推荐指数
1
解决办法
1879
查看次数

检查如果type是列表,则返回false

我试图处理具有属性的泛型类List<T>.但是在使用时检查属性时它不起作用IsAssignableFrom.

代码片段:

var type = model.GetType();

var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
int colorIndex = 0;

foreach (var property in properties)
{
    if (typeof(List<>).IsAssignableFrom(property.PropertyType))
    {
        //codes here

    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?为什么它不将列表视为列表,即使它是列表?

c# generics list

4
推荐指数
1
解决办法
139
查看次数

如何防止 chrome 扩展程序在仍然打开时重新打开同一个弹出窗口?

我正在开发具有登录弹出窗口的 chrome 扩展程序。所以这个想法是为了让扩展工作,它需要用户登录,以便它可以与我们的 API 交互并获取/发布数据。

因此,我覆盖browserAction以检查用户是否已登录,如果未登录,则应显示登录弹出窗口。我的问题是当我再次单击扩展图标时,它会重新打开同一个登录弹出窗口。我如何防止这种情况发生,并且如果登录窗口打开,只应显示一个实例?

背景.js

// omitted some codes for brevity
chrome.browserAction.onClicked.addListener(function () {
    // omitted some codes for brevity
    chrome.windows.create({ 
        'url': 'login.html', 
        'type': 'popup',
        'width': width,
        'height': height,
        'left': (screen.width/2) - (width/2),
        'top': (screen.height/2) - (height/2),
        'focused': true
    });
});
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-extension

0
推荐指数
1
解决办法
1355
查看次数