可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Is it possible to set a title in the window popup?
I have this in javascript:
var popup = window.open('......'); popup.document.title = "my title";
but this does not work..still can't see any title
EDIT: the page popup is displaying is .aspx and it HAS a title tag, but still can't see that on the popup window..
回答1:
Since popup.onload
does not seem to work, here is a workaround: http://jsfiddle.net/WJdbk/.
var win = window.open('', 'foo', ''); // open popup function check() { if(win.document) { // if loaded win.document.title = "test"; // set title } else { // if not loaded yet setTimeout(check, 10); // check in another 10ms } } check(); // start checking
回答2:
I was having problems with the accepted answer until I realized that if you open an existing, slow page that already has a <title>
the browser will 1) set your title, then 2) once the document fully loads it will (re)set the popup title with the "normal" value.
So, introducing a reasonable delay (function openPopupWithTitle
):
var overridePopupTitle = function(popup, title, delayFinal, delayRepeat) { // https://stackoverflow.com/a/7501545/1037948 // delay writing the title until after it's fully loaded, // because the webpage's actual title may take some time to appear if(popup.document) setTimeout(function() { popup.document.title = title; }, delayFinal || 1000); else setTimeout(function() { overridePopupTitle(popup, title); }, delayRepeat || 100); } var openPopupWithTitle = function(url, title, settings, delay) { var win = window.open(url, title, settings); overridePopupTitle(win, title, delay); return win; }
回答3:
None of these answers worked for me. I was trying to open a popup with a PDF inside and kept getting permission denied trying to set the title using the above methods. I finally found another post that pointed me in the correct direction. Below is the code I ended up using.
Source: How to Set the Title in Window Popup When Url Points to a PDF File
var winLookup; var showToolbar = false; function openReportWindow(m_title, m_url, m_width, m_height) { var strURL; var intLeft, intTop; strURL = m_url; // Check if we've got an open window. if ((winLookup) && (!winLookup.closed)) winLookup.close(); // Set up the window so that it's centered. intLeft = (screen.width) ? ((screen.width - m_width) / 2) : 0; intTop = (screen.height) ? ((screen.height - m_height) / 2) : 0; // Open the window. winLookup = window.open('', 'winLookup','scrollbars=no,resizable=yes,toolbar='+(showToolbar?'yes':'no')+',height=' + m_height + ',width=' + m_width + ',top=' + intTop + ',left=' + intLeft); checkPopup(m_url, m_title); // Set the window opener. if ((document.window != null) && (!winLookup.opener)) winLookup.opener = document.window; // Set the focus. if (winLookup.focus) winLookup.focus(); } function checkPopup(m_url, m_title) { if(winLookup.document) { winLookup.document.write('<html><head><title>' + m_title + '</title></head><body height="100%" width="100%"><embed src="' +m_url + '" type="application/pdf" height="100%" width="100%" /></body></html>'); } else { // if not loaded yet setTimeout(checkPopup(m_url, m_title), 10); // check in another 10ms } }
回答4:
Try this, it will work.
var timerObj, newWindow; function openDetailsPopUpWindow(url) { newWindow = window.open(url, '', 'height=500,width=700,menubar=no,resizable=yes,scrollbars=yes'); timerObj = window.setInterval("fun_To_ReTitle('~~newTitle~~ ')", 10); } function fun_To_ReTitle(newTitle){ if (newWindow.document.readyState == 'complete') { newWindow.document.title=newTitle; window.clearInterval(timerObj); } }