如何防止浏览器标题中的blob + guid

时间:2014-06-27 12:33:23

标签: javascript html html5 angularjs report

基本上,我正在做的是在服务器上生成一个PDF文件并通过javascript在浏览器中显示它:

  file = new window.Blob([data], { type: 'application/pdf' });
  var fileUrl = URL.createObjectURL(file);
  var wnd = window.open(fileUrl, "_blank", "location=no, fullscreen=yes, scrollbars=auto, width=" + screen.width + ",height=" + screen.height);

所有这一切都运行良好,但每个浏览器都显示一个丑陋的字幕(如下所示): blob:2da57927-311e-4b3d-a261-d2679074802c

有没有办法摆脱这个副标题或用有意义的东西取而代之?

编辑: 这是改进代码的屏幕截图(在应用VisioN的建议之后):

enter image description here

2 个答案:

答案 0 :(得分:3)

正如我在评论中提到的,一种可能的方法是在弹出窗口中创建<iframe>,显示当前的Blob数据,并根据需要设置弹出窗口样式:

var win = open('', 'name', 'height=300, width=300'),
    iframe = document.createElement('iframe'),
    title = document.createElement('title'),
    file = new Blob([data], { type: 'application/pdf' }),
    fileUrl = URL.createObjectURL(file);

title.appendChild(document.createTextNode('Nice title :)'));

iframe.src = fileUrl;
iframe.width = '100%';
iframe.height = '100%';
iframe.style.border = 'none';

win.document.head.appendChild(title);
win.document.body.appendChild(iframe);
win.document.body.style.margin = 0;

DEMO: http://jsfiddle.net/MeY9e/

答案 1 :(得分:0)

您可以简单地添加settimeout,以在将blob加载到新标签后更改页面标题,就像这样-

    newTab.location.href = URL.createObjectURL(blob); 
    setTimeout(function() {
        newTab.document.title = blob.name;
    }, 10);