我在Facebook上有一个应用程序,其功能可以直接发布到朋友的墙上。它在Firefox和Chrome中运行没有任何问题,但拒绝在IE中工作。这是唯一不能在IE中运行的函数,也是目标在不同域中的唯一函数。
function post_friends() {
var ser = $("#wall_form").serialize();
var spl = ser.split("friend%5B%5D=");
var token = $("#access").prop("value");
var youtube = $("#post_youtube").prop("value");
var shati = $("#share_title").prop("value");
for (var i = 0; i < spl.length; i += 1) {
if (spl[i] != "") {
var lps = spl[i].split("&");
var lru = "https://graph.facebook.com/" + lps[0] + "/feed";
var atad = "name=" + shati + "&access_token=" + token;
//as far as I can tell, this is the only part of the code that refuses to run.
var poche = $.post(lru, atad, function(msg) {
hide_black();
});
}
}
}
这是域名问题吗?我该如何解决这个问题?感谢。
编辑:
好的,所以这是一个域名问题。需要XDomainRequest,jQuery不使用它。编辑2:
问题解决了。
答案 0 :(得分:1)
IE在执行跨域请求时使用XDomainRequest
,jQuery不会使用它。现在,脚本不再使用$.post
,而是首先检查所使用的浏览器是否为IE,然后相应地执行操作:
if ($.browser.msie && window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("post", lru + "?" + atad);
xdr.onload = function() {
// XDomainRequest doesn't provide responseXml, so if you need it:
var dom = new ActiveXObject("Microsoft.XMLDOM");
dom.async = false;
dom.loadXML(xdr.responseText);
hide_black();
};
xdr.send();
}
else {
var poche = $.post(lru, atad, function(msg) {
hide_black();
});
}