如何使用 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 文档的 <title>
元素。由于您正在加载 PDF 文件,因此将由您的浏览器自行决定。
没有解决办法吗?我真的需要获取打开 pdf 的新窗口的标题。
我不知道任何解决方法,除了为您想要支持的每个浏览器编写一个插件。
并且窗口名称不能有空格,否则IE不会打开弹窗。 :)
【参考方案1】:
javascript 的“title”参数是一个在 JavaScript 内部使用的变量。写在窗口顶部的实际标题通常来自 HTML <title>
标签,但由于您显示的是 PDF,因此您没有该标签。
【讨论】:
没有办法获取新窗口的标题吗?【参考方案2】:如果域相同,则可以更改新窗口的标题
<script type="text/javascript">
var w = window.open('http://localhost:4885/UMS2/Default.aspx');
w.document.title = 'testing';
</script>
【讨论】:
尝试像这样添加setTimeout
:setTimeout(() => 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 正文中 <U><A style="cursor: pointer;" onclick="OpenWindow()">Open in New Window</a></U>
【讨论】:
它用于设置页面标题,但它也设置了页面的空白 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() 显示窗口标题?的主要内容,如果未能解决你的问题,请参考以下文章
javascript中用window.open(url)方法打开一个新窗口之后,新窗口已存在,如何让这个新窗口显示?
onclick window.open 师兄们搜索窗口如何在当前窗口打开呢?