如何在VSCode Webview中打开一个新的页面

yizhihongxing

  上一篇我介绍了如何在VSCode Webview中实现点击链接下载图片或文件,本文介绍如何在默认浏览器中打开一个新的页面。

  在浏览器中,如果要实现打开一个新的页面有许多种不同的方法,例如:

window.open("https://www.cnblogs.com/jaxu", "_blank");

  或者直接在页面上放一个<a>标签:<a href="https://www.cnblogs.com/jaxu" target="_blank">点我</a>。当然这个标签也可以是动态生成的:

let a= document.createElement('a');
a.target= '_blank';
a.href= "https://www.cnblogs.com/jaxu";
a.click();

  但是这些方法在VSCode Webview中依然不工作,查看Developer Tools中的Console,会看到一行诸如"Blocked opening 'https://www.cnblogs.com/jaxu' in a new window because the request was made in a sandboxed frame whose 'allow-popups' permission is not set."的错误。看样子需要在Webview生成的iframe中添加allow-popups属性许可。我简单查了一下相关文档,对于如何添加allow-popups并没有比较具体的说明(如果有小伙伴找到了也可以在评论区中告知,多谢!)。

  参照我们在上一篇中的办法,打开一个新页面可以通过VSCode内置的Command openExternal在Server端来实现:

await vscode.env.openExternal(vscode.Uri.parse(sUrl));

  Client端可以通过响应标签的onclick事件直接调用Server端暴露出来的API来打开一个新的页面。只不过默认情况下VScode会弹出一个提示:

如何在VSCode Webview中打开一个新的页面

  点击Configure Trusted Domains可以将要打开的页面的domain保存起来,这样下次就不会再出提示了。

  Trusted Domains可以在VSCode的命令面板(Ctrl + Shift + P)中输入Manage Trusted Domains打开。该设置项貌似不是单独存放在一个配置文件中,而且好像也不能通过代码进行预先设置。感兴趣的同学可以查看下面这个文件:

如何在VSCode Webview中打开一个新的页面

  在VSCode的Webview中,有许多行为是受限制的,我猜这些限制也是出于安全方面的考虑。如果发现通过常规的方法无法实现所要的功能,那么可以查看一下VSCode内置的Command,看看有没有哪个Command提供了相同的功能。

 

原文链接:https://www.cnblogs.com/jaxu/p/17385999.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在VSCode Webview中打开一个新的页面 - Python技术站

(0)
上一篇 2023年5月9日
下一篇 2023年5月10日

相关文章

  • javascript json2 使用方法

    下面是关于JavaScript中json2库的使用方法的详细攻略: 1. 什么是json2库? json2是一种JSON格式的解析器和序列化器的集合。该库把JSON格式转换为JavaScript对象,以及JavaScript对象转换成JSON格式。其中,json2.js是针对JSON对象在浏览器中的兼容性做的一个修复,当JSON对象在浏览器中使用时,当这个对…

    JavaScript 2023年5月27日
    00
  • 详解ES6 CLASS在微信小程序中的应用实例

    详解ES6 Class在微信小程序中的应用实例 介绍 ES6 Class 是用来创建对象的模板,它具有面向对象编程的特性,使代码更加清晰、易于维护和扩展。在微信小程序开发中,使用 ES6 Class 可以大大提升代码的可读性和可维护性。 ES6 Class 的基本用法 ES6 Class 的基本语法如下: class MyClass { constructo…

    JavaScript 2023年6月11日
    00
  • JavaScript展开操作符(Spread operator)详解

    JavaScript展开操作符(Spread operator)详解 展开操作符是JavaScript ES6(ECMAScript 2015)引入的一个新特性,它使用三个连续的点(…),通常用于展开数组和对象。本篇文章将详细讲解展开操作符的各种用法。 展开操作符的使用 展开数组 展开操作符可以用于展开数组,并将其展开为多个独立的值。示例代码如下: co…

    JavaScript 2023年5月27日
    00
  • 一文搞懂JavaScript数组的特性

    前言 数组是几乎所有编程语言的基础语法,JavaScript因为语法特性,之前缺少一些集合类对象,对数组的使用就会更多一些,因此我们更需要理解数组知识。然而大部分人对数组都已经非常熟悉了,所以本文将不会介绍数组的基础语法和用法,而是从JavaScript中数组的一些特殊之处入手,通过这些少有特性的详细介绍,加深我们对数组的理解。 基本介绍 首先,作为开始,我…

    JavaScript 2023年4月24日
    00
  • JS中如何轻松遍历对象属性的方式总结

    当我们需要遍历 JavaScript 对象的属性时,我们可以使用 for…in 循环、Object.keys() 方法或 Object.getOwnPropertyNames() 方法。 for…in 循环遍历对象属性 for…in 循环会遍历对象的所有可枚举属性,包括原型链上的属性。对于每个属性,for…in 循环会执行一次循环体中的代码。…

    JavaScript 2023年5月27日
    00
  • QQ邮箱的一个文本编辑器代码

    下面我来为您详细讲解“QQ邮箱的一个文本编辑器代码”的攻略。 一、QQ邮箱的文本编辑器代码介绍 QQ邮箱的文本编辑器代码可以用于邮件编写时对文本进行排版、格式、样式等的修改。主要代码如下: <span style="color:red;font-size:14px;font-weight:bold">这是一段红色、粗体、大小为…

    JavaScript 2023年6月11日
    00
  • js中的鼠标事件有哪些(用法示例学习进阶)

    JS中的鼠标事件是指在浏览器中用户和鼠标交互时,所触发的事件。在前端开发中,这些鼠标事件被广泛应用于各种网站和应用程序中。下面将介绍一些常用的鼠标事件以及它们的用法示例。 鼠标单击事件(click) 鼠标单击事件(click)是指在鼠标左键单击时所触发的事件。在页面中使用最为广泛的是按钮的单击事件。下面是一个示例,当按钮被单击时,将弹出一个提示框。 <…

    JavaScript 2023年6月11日
    00
  • 详解js创建对象的几种方式和对象方法

    详解JS创建对象的几种方式 在JS中,创建对象的方式有多种,我们将分别介绍它们的特点和使用情况。 对象字面量 对象字面量是最常用的创建对象的方式,它使用花括号{}包裹,其中包含多个键值对,每个键值对之间使用逗号分隔。 const person = { name: ‘Jack’, age: 20, sayHi: function(){ console.log(…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部