0
我有多個不屬於我的域的腳本,這些域將數據發送到頁面出口的AWS SQS隊列。當我將接收數據的次數與頁面上加載腳本的次數進行比較時,我發現57%的時間沒有收到數據。我預計不會收到數據,可能會有10 - 20%的時間可以接受。數據正在捕獲用戶操作,因此我不能在離開頁面之前發送任何內容。我想知道如果我在代碼中做了明顯錯誤的事情。任何幫助是極大的讚賞。嘗試在頁面退出時使用javascript發送跨數據域域
function addEvent(){
var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable
myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
if(e || window.event){
pageUnload();
}
});
}
addEvent();
function pageUnload(){
var host = window.location.host;
var path = window.location.pathname;
window.parent.data = '';
for (var i = 0; i < arrayCount; i++){
for (var j = 0; j < dataArray[i].length; j++){
window.parent.data += dataArray[i][j];
}
}
var urlString = 'h='+host+'&p='+path+'&'+window.parent.data;
var url = 'http://www.AWS_SQS_QUEUE.com?Action=SendMessage&MessageBody='+encodeURIComponent(urlString);
var method = 'HEAD';//Changed from GET to HEAD to avoid Cross Domain blocking in FF
if (navigator.sendBeacon) {
navigator.sendBeacon(url, null);
}
else{
var xhr = new XMLHttpRequest();
if("withCredentials" in xhr) {
xhr.open(method, url, true);
}
else if (typeof XDomainRequest != "undefined"){
xhr = new XDomainRequest();
xhr.open(method, url);
}
else {
xhr = null;
}
if (!xhr){
return;
}
xhr.send();
}
}