vscode 弹出窗口被阻止,打开代码空间,

ruarlubt  于 4个月前  发布在  Vscode
关注(0)|答案(4)|浏览(42)

测试 #161875
来源: insiders.vscode.dev
目标:GH Codespace
由于弹出窗口阻止,CS未打开:

zbwhf8kr

zbwhf8kr1#

@bpasero 创建的代码空间应该在新标签页中打开,请问使用的是哪个浏览器?在打开vscode.dev之前,您是否配置了弹出窗口阻止设置?这种情况是否对从vscode.dev打开的所有外部链接都发生?

wz3gfoph

wz3gfoph2#

这段文本内容是一段JavaScript代码,主要描述了在VS Code中打开一个新窗口时,如果浏览器阻止了这个操作,会弹出一个警告对话框让用户选择是否继续尝试打开。这段代码涉及到了浏览器的兼容性问题,因为不同的浏览器厂商对于何时允许打开一个新窗口有不同的阈值。例如,Safari浏览器在这方面表现得较差,甚至需要开发者实现一个回退方案。

翻译后的中文文本如下:

这段代码发生在用户与窗口交互后,打开窗口的过程中。下一次执行这个操作时,窗口会自动打开。我相信浏览器厂商对于何时允许打开一个新窗口有不同的阈值,以应对可能的弹窗拦截器。我知道Safari在这方面表现得最差,甚至需要我们实现一个回退方案:

// 在vscode/src/vs/workbench/browser/window.ts文件的第160行到第194行之间
if (matchesScheme(href, Schemas.http) || matchesScheme(href, Schemas.https)) {
  if (isSafari) {
    const opened = windowOpenWithSuccess(href, !isAllowedOpener);
    if (!opened) {
      const showResult = await this.dialogService.show(
        Severity.Warning,
        localize('unableToOpenExternal', "The browser interrupted the opening of a new tab or window. Press 'Open' to open it anyway."),
        [
          localize('open', "Open"),
          localize('learnMore', "Learn More"),
          localize('cancel', "Cancel")
        ],
        {
          cancelId: 2,
          detail: href
        }
      );

      if (showResult.choice === 0) {
        isAllowedOpener ? windowOpenPopup(href) : windowOpenNoOpener(href);
      } else if (showResult.choice === 1) {
        await this.openerService.open(URI.parse('https://aka.ms/allow-vscode-popup'));
      }
    }
  } else {
    isAllowedOpener ? windowOpenPopup(href) : windowOpenNoOpener(href);
  }
}
5ssjco0h

5ssjco0h3#

@bpasero我们是否应该在非Safari浏览器上也始终使用这种回退逻辑?

ndh0cuux

ndh0cuux4#

是的,为什么不呢?我们必须验证我们的逻辑在其他浏览器中是否有效。👍

相关问题