1. 最近需要做一个点击表格某一列的标题,预览当前文件的一个小功能。本身功能很简单,点击该标题,预览文件,那么拿到他对应的文件地址,在浏览器打开就行了。

2. 事实如此,使用window.open(url, '_blank');就行,只要你地址正确,那么在浏览器的窗口就打开了一个新的文件,(注意这里打开的是pdf格式,其它格式的需要对应的方法),然而问题来了,文件是正常打开了,但是浏览器窗口的标题确不是我想要的,为此设置了半天,还是不行。
3.找了半天原因,原来是 浏览器 “新窗口的名字是由浏览器根据url 定义的,本身无法设置”,但是现在有这个需求,尝试了很多方法都不行,后来发现了window.open 本身有许多内置属性,例如:
width:窗口的宽度;
height:窗口的高度;
top:窗口距离屏幕顶部的距离,默认0;
left:窗口距离屏幕左侧的距离,默认0;
menubar:是否显示菜单栏,yes\no;
toolbar:是否显示工具栏,yes\no;
location:是否显示地址栏,yes\no;
status:是否显示状态栏,yes\no;
resizable:是否允许用户调整窗口大小,yes\no;
scrollbars:是否显示滚动条,yes\no。
打开一个新窗口本质是打开一个页面,那么肯定有 body,document 这些元素,那么我们直接设置他的title不就行了,事实还真可以。
let pages= window.open(encodeURI(basePreviewUrl + ret.body.viewPath), '_blank');
 // 强行设置标题     新窗口的名字是由浏览器定义的 本身无法设置
 setTimeout(function(){
        pages.document.title = fileName 
 },3000);
//fileName  是名称  open 里面是地址 换成你们自己的注意这里的定时器:如果你要加载的文件时间很长的话,不加定时器标题会被浏览器生成的标题覆盖了,后面的时间看你们实际需要多长时间。
4. 既然这样可以加上的话,那很简单了,我们直接往里面扔个iframe进去不就行了,把它的宽、高、边框设置为空不就行了,具体代码如下:
 // 强行设置标题  方法
                 openUrl(url, title) { 
                    //console.log('url',url,title)
                      // 检查是否已经存在相同URL的窗口,不要重复打开
                        if (vue.flagYu === url) {
                            return; 
                        }
                      const newWindow= window.open('about:blank', title);
                      newWindow.document.title = title;
                      let iframe = document.createElement('iframe');
                      iframe.src = url;
                      iframe.style.width = '100%';
                      iframe.style.height = '100vh';
                      iframe.style.margin = '0';
                      iframe.style.padding = '0';
                      iframe.style.overflow = 'hidden';
                      iframe.style.border = 'none';
                      newWindow.document.body.style.margin = '0';
                      newWindow.document.body.appendChild(iframe);
                      window.newWindow = newWindow;
                      vue.flagYu = url;
  },
这里是用vue 封装了一个方法,需要的话直接传参数就行了,传url,和要显示的标题就行。
this.openUrl('','标题')。
结束。。
如果对您有用,请点个赞哦(ღ( ´・ᴗ・` )比心)



















