我有一个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上很好地显示)
答案 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
});
}
};
希望它有所帮助。