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

被折叠的 条评论
为什么被折叠?



