У меня есть сценарий для нескольких доменов, которые не являются моими, которые отправляют данные в очередь 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();
}
}