权限在IE7后window.open否认()(Permission denied after win

2019-10-17 05:16发布

我们有一个内嵌IE控件的WinForms应用程序。

这个IE中控制,我们运行一个Web应用程序(我控制Web应用程序而不是WinForms应用程序)。

在Web应用程序中,我运行一些JavaScript来打开一个子窗口,并用HTML填充它:

    var features = "menubar=no,location=no,resizable,scrollbars,status=no,width=800,height=600,top=10,left=10";
    newTarget = "reportWin" + String ( Math.random () * 1000000000000 ).replace( /\./g ,"" );
    reportWindow = window.open('', newTarget, features); 
    var d = reportWindow.document; // <-- Exception is thrown here
    d.open();
    d.write('<head>\r\n<title>\r\n...\r\n</title>\r\n</head>');
    d.write('<body style="height: 90%;">\r\n<table style="height: 100%; width: 100%;" border="0">\r\n<tr>\r\n<td align="center" valign="middle" style="text-align:center;">\r\n');
    d.write(...);
    d.close();

当我们运行这个WinForms应用程序中的Web应用程序(但不是以本身也不在另一个WinForms应用程序),我们得到的指示线JavaScript错误:

Line 0: Access denied

为什么这可能是发生或我怎么能避免任何想法? 需要注意的是窗口没有打开一个URL; 它只是一个空的窗口。

从相同的应用程序,在同一个域中指定的URL打开的窗口没有工作。

Answer 1:

基于:

  1. IE 6/7被拒绝访问试图访问一个弹出window.document
  2. http://thecodecave.com/2006/07/20/how-to-get-around-access-is-denied-in-a-windowopen-javascript-call/

您所遇到的问题是该URL被打开需要在同一个域中被打开它的页面。 大概一个空白的网址不会分享其创造者的域。 我写了一对夫妇的快速测试网页,发现

  1. 主叫var reportWindow = window.open('', newTarget, features); 导致拒绝访问错误。
  2. 用同样的事情var reportWindow = window.open('http://google.com', newTarget, features);
  3. 但开放中不呈现该网站其他页面确实工作var reportWindow = window.open('WebForm2.aspx', newTarget, features);

这最后一个弹出指向一个窗口WebForm2.aspx其执行该代码:

window.document.open();
window.document.write('<head>\r\n<title>\r\n...\r\n</title>\r\n</head>');
window.document.write('test<body style="height: 90%;">\r\n<table style="height: 100%; width: 100%;" border="0">\r\n<tr>\r\n<td align="center" valign="middle" style="text-align:center;">\r\n');
window.document.close();


文章来源: Permission denied after window.open() in IE7