我们有一个利用facebook javascript sdk和登录功能的应用程序。
我们注意到生产日志中出现了此错误。专门针对版本为 10.3 及更高版本的 iOS 设备。似乎也只针对野生动物园浏览器
安全错误(DOM 异常 18(:阻止了具有原点的帧 "https://www.mymadeupsite.com"访问具有原点的帧 "https://staticxx.facebook.com"。正在访问的帧集 "document.domain"改为"facebook.com",但框架请求访问 冇。两者都必须将"document.domain"设置为相同的值才能允许 访问。
这是我们的初始化函数:
init: function(options) {
var facebookUrl, scriptInclude;
Facebook.baseHost = options.baseHost;
if (typeof FB !== "undefined" && FB !== null) {
return Facebook.setup();
} else {
if (options.appId == null) {
throw 'Facebook: cannot init without appId';
}
window.fbAsyncInit = function() {
FB.init({
appId: options.appId,
version : 'v2.3',
channelUrl: options.channelUrl || ("" + document.location.protocol + "//" + document.location.host + "/channel.html"),
status: true,
cookie: false,
xfbml: false,
oauth: true
});
return Facebook.setup();
};
$('body').append('<div id="fb-root"></div>');
facebookUrl = "//connect.facebook.net/" + (Facebook.getLocaleFacebookSupports(Social.SETTINGS.fbLocale)) + "/sdk.js";
scriptInclude = "<script type="text/javascript" async="true" src="" + facebookUrl + ""></script>";
return $('#fb-root').append(scriptInclude);
}
}
我的问题,为什么我们只在iOS设备和版本10.3上收到此错误?
遇到了这个问题,在挖掘之后,它似乎是浏览器自动填充中的一个错误: 发送到我们的日志记录集群的堆栈跟踪如下所示:
g@https://example.com:5:190,
g@https://example.com:7:323,
extractNewForms@https://example.com:13:37,
extractForms@https://example.com:8:381,
global code@https://example.com:1:98
如您所见,错误发生在extractForms
函数中的某个位置,而(对我们来说(代码库中的任何地方都不存在。谷歌搜索显示,extractForms
和extractNewForms
都是浏览器自动填充库的一部分,这里的线程表明那里有一个错误(评论12和15与您的问题最相关(。
据我所知,这也与Facebook没有特别关系:在我们的日志中,我们看到更多iframe的类似错误,包括来自我们自己控制的(子(域的iframe。
不幸的是,我不知道任何修复或解决方法,我也非常怀疑(用户土地(修复/解决方法是否真的可行。我认为您唯一能做的就是忽略这些错误。