如何使用 window.open() 显示窗口标题?

Posted

技术标签:

【中文标题】如何使用 window.open() 显示窗口标题?【英文标题】:how to show window title using window.open()? 【发布时间】:2011-12-24 12:10:44 【问题描述】:

我想打开一个新窗口:

window.open('<myfile>.pdf','my window','resizable,scrollbars');

新窗口打开,但我没有将窗口标题设为“我的窗口”。 可能出了什么问题?

【问题讨论】:

window.open() 的第二个参数是新窗口的名称,而不是它的标题。实际标题来自加载到该窗口的 html 文档的 &lt;title&gt; 元素。由于您正在加载 PDF 文件,因此将由您的浏览器自行决定。 没有解决办法吗?我真的需要获取打开 pdf 的新窗口的标题。 我不知道任何解决方法,除了为您想要支持的每个浏览器编写一个插件。 并且窗口名称不能有空格,否则IE不会打开弹窗。 :) 【参考方案1】:

javascript 的“title”参数是一个在 JavaScript 内部使用的变量。写在窗口顶部的实际标题通常来自 HTML &lt;title&gt; 标签,但由于您显示的是 PDF,因此您没有该标签。

【讨论】:

没有办法获取新窗口的标题吗?【参考方案2】:

如果域相同,则可以更改新窗口的标题

 <script type="text/javascript">
    var w = window.open('http://localhost:4885/UMS2/Default.aspx');
    w.document.title = 'testing';
 </script>

【讨论】:

尝试像这样添加setTimeoutsetTimeout(() =&gt; w.document.title = 'This is a test',0);【参考方案3】:

这是我的解决方案,请查看:

var myWindow = window.open('<myfile>.pdf','my window','resizable,scrollbars');
myWindow.document.write('<title>My PDF File Title</title>');

希望我能帮上忙。

【讨论】:

【参考方案4】:

这就是我所做的:

    <script type="text/javascript">
    function OpenWindow() 
            var pdf = '<%= "PDFs/13.7/" + ddlLinkValidation.SelectedValue.ToString() + ".pdf" %>';
            var win = window.open('','UATRpt', 'menubar=0,location=0,toolbar=0,resizable=1,status=1,scrollbars=1');

            if(win.document)  
                win.document.write('<html><head><title>Your Report Title</title></head><body  ><iframe src="' + pdf + '"  ></iframe></body></html>');
             
            return true;
     
    </script>

在 HTML 正文中 &lt;U&gt;&lt;A style="cursor: pointer;" onclick="OpenWindow()"&gt;Open in New Window&lt;/a&gt;&lt;/U&gt;

【讨论】:

它用于设置页面标题,但它也设置了页面的空白 url,因此下载链接不起作用。有什么建议吗?【参考方案5】:

在我的情况下,唯一有效的方法是像这样使用setTimeout:

var mapWin = window.open('', '_blank', ''); // Opens a popup   

setWindowTitle(mapWin) // Starts checking

function setWindowTitle(mapWin)

    if(mapWin.document) // If loaded
    
        mapWin.document.title = "Oil Field Map";
    
    else // If not loaded yet
    
        setTimeout(setWindowTitle, 10); // Recheck again every 10 ms
    

【讨论】:

【参考方案6】:

如果新窗口有一个文件(例如 PDF)作为 url,那么 该页面可能没有“head”标签

你必须在修改/添加标题之前添加一个。

jQuery :

var w = window.open('/path/to/your/file.pdf');// or any url
$(w.document).find('html').append('<head><title>your title</title></head>');

原生js:

var w = window.open('/path/to/your/file.pdf');// or any url
w.document.getElementsByTagName('html')[0]
   .appendChild(document.createElement('head'))
   .appendChild(document.createElement('title'))
   .appendChild(document.createTextNode('your title'));

现在,如果页面加载时间过长,您可以添加一个 onload watch,然后也可以超时。就我而言,我不得不这样编码:

var w = window.open('/path/to/your/file.pdf');// or any url
w.onload = function()
    setTimeout(function()
       $(w.document).find('html').append('<head><title>your title</title></head>');
    , 500);
 // quite ugly hu !? but it works for me.

【讨论】:

对于 jQuery,在保留 $(...) 对象的同时,我宁愿选择 $(w.document.lastChild) ,而不是指定 .find 方法——它必须更快。跨度> 【参考方案7】:

以下代码适用于 Mozilla Firefox、IE 11 和 Google Chrome。

var winUrl = 'target URL that needs to open in new window';     

var _newWindow = window.open(winUrl, "_newWindow");

_newWindow.document.title = "My New Title";

【讨论】:

这似乎是完成任务的最简单方法。有时显而易见,复杂是浪费时间。【参考方案8】:
    var myWindow = window.open('', '', 'width=600,height=400');
    setTimeout(function() myWindow.document.title = 'my new title'; , 1000);

作品 chrome 2018

【讨论】:

【参考方案9】:

在新打开的窗口中更改 pdf 的标题

    function titlepath(path,name)

        //In this path defined as your pdf url and name (your pdf name)

            var prntWin = window.open();
            prntWin.document.write("<html><head><title>"+name+"</title></head><body>"
                + '<embed   name="plugin" src="'+ path+ '" '
                + 'type="application/pdf" internalinstanceid="21"></body></html>');
            prntWin.document.close();
        

点击

<a onclick="titlepath('your url','what title you want')">pdf</a>

【讨论】:

【参考方案10】:

您可以尝试编写 html 文档:将 pdf url 设置为 iframe 并让标题标签定义页面标题。

var w = window.open();
w.document.write(`<html>
  <head>
    <title>$title</title>
  </head>
  <body style="margin: 0; padding: 0">
    <iframe src="$pdfInlineUrl" style="width: 100%; height: 100%; margin: 0; padding: 0; border: none;"></iframe>
  </body>
</html>`);

【讨论】:

【参考方案11】:
const wnd = window.open(url, '_blank');

wnd.onload = function() 
   wnd.document.title = 'YOUR TITLE';

【讨论】:

以上是关于如何使用 window.open() 显示窗口标题?的主要内容,如果未能解决你的问题,请参考以下文章

如何将window.open弹出的窗口总在最前显示

javascript中用window.open(url)方法打开一个新窗口之后,新窗口已存在,如何让这个新窗口显示?

onclick window.open 师兄们搜索窗口如何在当前窗口打开呢?

window.open

PyQt5 window.close() 不会关闭窗口,但 window.open() 工作正常

使用window.open()打开新的窗口