尝试更改浏览器窗口标题时权限被拒绝



我有一个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);

注意:只有当您可以修改要打开的窗口的源代码时,这显然才有效。

最新更新