vue项目如何通过url链接引入其他系统页面

 更新时间:2023年03月10日 10:07:55   作者:清云青云  
这篇文章主要介绍了vue项目如何通过url链接引入其他系统页面问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue通过url链接引入其他系统页面

1.正常配置菜单

在vue页面使用iframe进行嵌套加载其它系统的页面,已加载百度为例

<template>
  <div id="app">
      <iframe
         style="border:none"
         :width="searchTableWidth"
         :height="searchTableHeight"
         v-bind:src="reportUrl"
       ></iframe>
  </div>
</template>
<script>
import Vue from 'vue'
export default {
  methods: {
    widthHeight() {
      this.searchTableHeight = window.innerHeight -180;
      this.searchTableWidth = window.innerWidth - 230
    },
  },
  data() {
    return {
      reportUrl: 'https://www.baidu.com/',
      searchTableHeight: 0,
      searchTableWidth: 0
    }
  },
   mounted() {
    window.onresize = () => {
      this.widthHeight(); // 自适应高宽度
    };
    this.$nextTick(function () {
      this.widthHeight();
    });
  },
  created() {
    // 从路由里动态获取 url地址   具体地址看libs下util.js里的 backendMenuToRoute  方法 
    this.reportUrl = 'https://www.baidu.com/'
  },
  watch: {
    '$route': function () {
      // 监听路由变化
      this.reportUrl =  'https://www.baidu.com/'
    }
  }
}
</script>

效果图:

2.加载引入系统可能会出现拦截

xxx 拒绝了我们的连接请求。

前端页面Refused to display 'xxx' in a frame because it set 'X-Frame-Options' to 'sameorigin',对于这个问题我们需要在引入的项目中进行拦截处理,引入项目中response.addHeader("x-frame-options","SAMEORIGIN")需要改写为response.addHeader("x-frame-options","ALLOW-FROM http://127.0.0.1:项目端口/");对访问方式进行允许iframe不同域名之间进行调动

3.引入项目的后台拦截代码

@Configuration
public class MvcConfig implements WebMvcConfigurer {
   //配置日志
    private static final Logger logger= LoggerFactory.getLogger(MvcConfig.class);
    
    @Autowired
    SystemConfig systemConfig;
   
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new HandlerInterceptor() {
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                //设置日志级别
                //logger.debug("前置方法被执行");
                return true;
            }
 
            @Override
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
                //logger.info("后置方法被执行");
                //System.out.println(systemConfig.getMqiUrl());
                if(null == modelAndView){
                    return;
                }
                response.addHeader("x-frame-options","ALLOW-FROM http://127.0.0.1:8004/");

                modelAndView.getModelMap().addAttribute("arcgisserviceUrl", systemConfig.getArcgisserviceUrl());
            }
 
            @Override
            public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
                //logger.debug("最终方法被执行");
            }
        });
    }
}

vue页面嵌套外部url

我的需求是一进入页面通过调接口获取页面的url,然后把url嵌套到当前页面。

<template>
  <div class="page-content" id="bi-div"></div>
</template>

<script>
  import reportFormApi from '@/api/reportForm'
  
  export default {
    name: 'reportComponent',
    props:{
      codeStr:String
    },
    data () {
      return {
        urlCode :"",
      }
    },
    mounted: function () {
      if(this.codeStr){
        this.urlCode = this.codeStr;
        this.getUrl();
      }
    },
    methods: {
      getUrl(){
        reportFormApi.getQuickBi({url : "/postUrl/" + this.urlCode}).then(res=>{
          if(res.code==0){
            var frame = '<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no" width="100%" height="100%" src="' + res.data.previewUrl + '"></iframe>';
            var newNode = document.createElement('div');
            newNode.innerHTML = frame;
            newNode.style.height = '1200px';
            var htmlBody = document.getElementById('bi-div');
            htmlBody.insertBefore(newNode, htmlBody.firstChild);
          }else{
            this.$Message.error({
              content: res.message,
              duration: 2.5,
              closable:true,
            });
          }
        })
      }
    }
  }
</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • ElementUI radio组件选中小改造

    ElementUI radio组件选中小改造

    这篇文章主要介绍了ElementUI radio组件选中小改造,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • vue项目base64转img方式

    vue项目base64转img方式

    这篇文章主要介绍了vue项目base64转img方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue如何判断数组中的对象是否包含某个值

    vue如何判断数组中的对象是否包含某个值

    这篇文章主要介绍了vue如何判断数组中的对象是否包含某个值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue3的setup语法如何自定义v-model为公用hooks

    vue3的setup语法如何自定义v-model为公用hooks

    这篇文章主要介绍了vue3的setup语法如何自定义v-model为公用hooks,文章分为两个部分介绍,简单介绍vue3的setup语法如何自定义v-model和如何提取v-model语法作为一个公用hooks
    2022-07-07
  • Vue实现输入框回车发送和粘贴文本与图片功能

    Vue实现输入框回车发送和粘贴文本与图片功能

    这篇文章主要为大家详细介绍了Vue如何实现聊天输入框回车发送、粘贴文本(包括HTML)、粘贴图片等功能,文中的实现方法讲解详细,需要的可以参考一下
    2022-05-05
  • Vue+node实现音频录制播放功能

    Vue+node实现音频录制播放功能

    这篇文章主要介绍了Vue+node实现音频录制播放,功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • vue返回上一页面时回到原先滚动的位置的方法

    vue返回上一页面时回到原先滚动的位置的方法

    这篇文章主要介绍了vue返回上一页面时回到原先滚动的位置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Vue路由监听实现同页面动态加载的示例

    Vue路由监听实现同页面动态加载的示例

    本文主要介绍了Vue基于路由监听实现同页面动态加载的示例,重点在于切换路由的时候,重新拉取列表数据,接下来看看实现方法吧
    2021-05-05
  • WebSocket使用以及在vue如何使用问题

    WebSocket使用以及在vue如何使用问题

    这篇文章主要介绍了WebSocket使用以及在vue如何使用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • vue轮播组件实现$children和$parent 附带好用的gif录制工具

    vue轮播组件实现$children和$parent 附带好用的gif录制工具

    这篇文章主要介绍了vue轮播组件实现,$children和$parent,附带好用的gif录制工具,需要的朋友可以参考下
    2019-09-09

最新评论