vue是用a标签打开新页面_vue 在新窗口打开页面并设置不同的背景

这篇博客介绍了如何在Vue.js单页应用中处理点击按钮后在新窗口打开页面的需求。作者提供了两种解决方案,通过设置a标签的href属性或使用$router.resolve来打开新窗口。同时,针对新页面的全局背景颜色问题,作者在新页面的beforeCreate和beforeDestroy生命周期钩子中动态修改body的class,从而改变背景色。在CSS中定义了新的背景渐变色。

开发一个新系统,前端用的vue,vue是单体应用,所有页面都在一个窗口里实现,但项目要求在点button链接后要新打开一个浏览器页面,解决方法如下:

1. 给此button设置新事件 @click="createdefect"

提交缺陷

2.在页面上新增一个默认 a组件

3. 写js事件

createdefect(){

let target = this.$refs.target

target.setAttribute('href', window.location.origin + '/#/createDefect')

target.click()

},

或者可以这样:

createdefect(){

letrouteName= "createDefect";

letrouteData= this.$router.resolve({

name: routeName,

});

window.open(routeData.href, "_blank");

},

然后新开的页面还用的app.vue中的全局背景,需要更改。之前想着用改变最上层body的css覆盖来解决问题,结果没走通,查资料发现要从生命周期, js的逻辑来解决。要通过一个组件“初始化”,“销毁"来控制body的颜色。下面是具体代码。

1. 在新页面的js中增加如下代码:

beforeCreate: function() {

document.getElementsByTagName("body")[0].className="body_back";

},

beforeDestroy: function() {

document.body.removeAttribute("class","body_back");

}

2. 在新页面对应的css中设置如下:

.body_back{

background:linear-gradient(to right,#fff,#f5f6f9)

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值