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

时间:2014-11-07 21:37:43

标签: javascript internet-explorer-11

我有一个生成PDF的servlet,输出转到一个新的浏览器窗口。 我试图使用下面的updateTitle()函数替换该新窗口的标题。 但是,当我尝试将报告名称(repName)分配给窗口实例时,IE11会抛出“权限被拒绝”错误。有什么想法吗?

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);
}

1 个答案:

答案 0 :(得分:0)

您需要使用类似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);

注意:这显然只有在您可以修改正在打开的窗口的来源时才有效。