https on ie:弹出窗口无法正常工作(因为脚本)

时间:2014-05-07 15:34:44

标签: javascript ajax internet-explorer https popupwindow

我有一个jquery ajax电话:

var popup = function () {
  if (myurl) {
   $.ajax({
    type: "POST",
    url: myurl,
    data: mydata,
    success: function (response) {  

        // other code here                  
        var x=window.open('', '_blank', 'titlebar=no,scrollbars=yes,menubar=no,height='+height+',width='+width+',resizable=yes,toolbar=no,location=no,location=0,status=no,left='+left+',top='+top+'');
        x.document.open();
        x.focus();
        x.document.writeln(response);
        x.document.close();

        return false;
    },

    error: function () {  
        return false;
    },
  });
 }
}; 

它适用于所有浏览器(在http上),但由于我使用https,弹出窗口打开并循环而不显示任何内容并阻止浏览器在IE上(我测试了8,9和10)。在Chrome和Firefox上它继续工作。

修改

我在弹出窗口上写的响应包含导致问题的jquery / javascript脚本。 但我怎么能阻止这个?

EDIT2

在jsp(用于创建弹出内容)中,我已经把

<script type="text/javascript">
<!--
javascript code
// -->
</script>

这部分解决了这个问题。

导入的js文件是什么?

 <script type="text/javascript" src="js/jquery-ui-1.9.1.js"></script>

jquery文件的路径是相对的,但问题仍然存在。 此外,如果我使用https的外部链接。

如果我使用

导入js文件
<!--[if !IE]>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.8.2.min.js"></script> 
<script type="text/javascript" src="https://code.jquery.com/ui/1.9.1/jquery-ui.min.js"></script>
<![endif]-->

所有&#34;工作&#34;很好,那就是IE浏览器在打开弹出窗口时没有阻止,但我会提供一个允许脚本执行的解决方案

EDIT3

问题是由兼容模式IE = 8引起的 我从弹出页面及其父页面中删除了它,我在IE 10上解决了,但对于IE 8和9呢? (没有脚本,弹出窗口在IE上很好地显示)

2 个答案:

答案 0 :(得分:0)

如果您添加了使用其他协议的任何资源 - 这将导致IE 8-9中的错误。

因此,您应该检查新窗口中的javascript是否向https发出请求,并且所有内容都包含https,包括图片等。

答案 1 :(得分:0)

问题似乎来自错误功能之后的额外通信,

在ajax通话中, $.ajax 不得跟随最后一个参数/属于,来电。

这适用于所有新浏览器,但旧浏览器(如IE 7)会在该行上抛出js错误&amp;后续请求停止

var popup = function () {
  if (myurl) {
   $.ajax({
    type: "POST",
    url: myurl,
    data: mydata,
    success: function (response) {  

        // other code here                  
        var x=window.open('', '_blank', 'titlebar=no,scrollbars=yes,menubar=no,height='+height+',width='+width+',resizable=yes,toolbar=no,location=no,location=0,status=no,left='+left+',top='+top+'');
        x.document.open();
        x.focus();
        x.document.writeln(response);
        x.document.close();

        return false;
    },

    error: function () {  
        return false;
    }//,   <= Remove this extra comma
  });
 }
}; 

希望它有所帮助。