我有一个servlet,它生成一个PDF,输出将进入一个新的浏览器窗口。我正试图使用下面的updateTitle()函数来替换那个新窗口的标题。然而,当我尝试将报告名称(repName)分配给窗口实例时,IE11会抛出一个"Permission denied"错误。有什么想法吗?
function showReport(url, repName){
var repWin = window.open(url);
updateTitle(repWin, repName)
}
function updateTitle(repWin, repName) {
setTimeout(function() {
repWin.document.title = repName; //IE11 console throws PERMISSION DENIED here
}, 3000);
}
您将需要使用类似postMessage的东西。
在您的原始窗口上:
function showReport(url, repName) {
var repWin = window.open(url);
repWin.postMessage('setTitle:' + repName, '*');
}
关于repWin
:
function updateTitle(message) {
var m = message.data.split(':'),
eventType = m[0],
data = m[1];
if (message.origin === 'YOUR_URL_HERE' && eventType === 'setTitle' ) {
repWin.document.title = data;
}
}
window.addEventListener("message", updateTitle, false);
注意:只有当您可以修改要打开的窗口的源代码时,这显然才有效。