@glitchr/transparent 1.0.35 → 1.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/js/transparent.js +84 -3
package/package.json
CHANGED
package/src/js/transparent.js
CHANGED
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
"data": {},
|
|
161
161
|
"disable": false,
|
|
162
162
|
"global_code": true,
|
|
163
|
-
"debug":
|
|
163
|
+
"debug": false,
|
|
164
164
|
"lazyload": true,
|
|
165
165
|
"response_text": {},
|
|
166
166
|
"response_limit": 25,
|
|
@@ -1437,7 +1437,18 @@
|
|
|
1437
1437
|
var form = target != undefined && target.tagName == "FORM" ? target : undefined;
|
|
1438
1438
|
if (form) {
|
|
1439
1439
|
|
|
1440
|
-
data = new FormData(
|
|
1440
|
+
data = new FormData();
|
|
1441
|
+
var formInput = $("[name^='"+form.name+"\[']");
|
|
1442
|
+
formInput.each(function() {
|
|
1443
|
+
|
|
1444
|
+
if(this.type == "file") {
|
|
1445
|
+
|
|
1446
|
+
for(var i = 0; i < this.files.length; i++)
|
|
1447
|
+
data.append(this.name, field.files[i]);
|
|
1448
|
+
|
|
1449
|
+
} else data.append(this.name, this.value);
|
|
1450
|
+
});
|
|
1451
|
+
|
|
1441
1452
|
$(form).find(':submit').attr('disabled', 'disabled');
|
|
1442
1453
|
}
|
|
1443
1454
|
|
|
@@ -1546,7 +1557,7 @@
|
|
|
1546
1557
|
}
|
|
1547
1558
|
|
|
1548
1559
|
var response = JSON.parse(responseText);
|
|
1549
|
-
if(Settings.debug) console.
|
|
1560
|
+
if(Settings.debug) console.debug(response);
|
|
1550
1561
|
|
|
1551
1562
|
if(response.code == "302") {
|
|
1552
1563
|
|
|
@@ -1668,10 +1679,80 @@
|
|
|
1668
1679
|
|
|
1669
1680
|
window.onpopstate = __main__; // Onpopstate pop out straight to previous page.. this creates a jump while changing pages with hash..
|
|
1670
1681
|
window.onhashchange = __main__;
|
|
1682
|
+
|
|
1683
|
+
var formDataBefore = {};
|
|
1684
|
+
$(window).on("DOMContentLoaded", function() {
|
|
1685
|
+
|
|
1686
|
+
formDataBefore = {};
|
|
1687
|
+
$("form").each(function() {
|
|
1688
|
+
|
|
1689
|
+
var formData = new FormData();
|
|
1690
|
+
var formInput = $("[name^='"+this.name+"\[']");
|
|
1691
|
+
formInput.each(function() {
|
|
1692
|
+
|
|
1693
|
+
if(this.type == "file") {
|
|
1694
|
+
|
|
1695
|
+
for(var i = 0; i < this.files.length; i++)
|
|
1696
|
+
formData.append(this.name, field.files[i]);
|
|
1697
|
+
|
|
1698
|
+
} else formData.append(this.name, this.value);
|
|
1699
|
+
});
|
|
1700
|
+
|
|
1701
|
+
for (var [fieldName,fieldValue] of formData.entries())
|
|
1702
|
+
formDataBefore[fieldName] = fieldValue;
|
|
1703
|
+
});
|
|
1704
|
+
});
|
|
1705
|
+
|
|
1706
|
+
window.onbeforeunload = function() {
|
|
1707
|
+
|
|
1708
|
+
var preventDefault = false;
|
|
1709
|
+
var formDataAfter = [];
|
|
1710
|
+
$("form").each(function() {
|
|
1711
|
+
|
|
1712
|
+
var formData = new FormData();
|
|
1713
|
+
var formInput = $("[name^='"+this.name+"\[']");
|
|
1714
|
+
formInput.each(function() {
|
|
1715
|
+
|
|
1716
|
+
if(this.type == "file") {
|
|
1717
|
+
|
|
1718
|
+
for(var i = 0; i < this.files.length; i++)
|
|
1719
|
+
formData.append(this.name, field.files[i]);
|
|
1720
|
+
|
|
1721
|
+
} else formData.append(this.name, this.value);
|
|
1722
|
+
});
|
|
1723
|
+
|
|
1724
|
+
for (var [fieldName,fieldValue] of formData.entries()) {
|
|
1725
|
+
formDataAfter[fieldName] = fieldValue;
|
|
1726
|
+
}
|
|
1727
|
+
});
|
|
1728
|
+
|
|
1729
|
+
var formDataBeforeKeys = Object.entries(formDataBefore).keys();
|
|
1730
|
+
var formDataAfterKeys = Object.entries(formDataAfter).keys();
|
|
1731
|
+
|
|
1732
|
+
if(formDataAfterKeys != formDataAfterKeys) preventDefault = true;
|
|
1733
|
+
else {
|
|
1734
|
+
|
|
1735
|
+
for (var [fieldName,fieldValueAfter] of Object.entries(formDataAfter)) {
|
|
1736
|
+
|
|
1737
|
+
var fieldValueBefore = formDataBefore[fieldName];
|
|
1738
|
+
if(fieldValueBefore instanceof File) {
|
|
1739
|
+
|
|
1740
|
+
if(!fieldValueAfter instanceof File) preventDefault = true;
|
|
1741
|
+
else if (fieldValueBefore.size != fieldValueAfter.size) preventDefault = true;
|
|
1742
|
+
|
|
1743
|
+
} else if(fieldValueBefore != fieldValueAfter) preventDefault = true;
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
if(Settings.debug || preventDefault)
|
|
1748
|
+
return "Dude, are you sure you want to leave? Think of the kittens!";
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1671
1751
|
document.addEventListener('click', __main__, false);
|
|
1672
1752
|
|
|
1673
1753
|
$("form").on("submit", __main__);
|
|
1674
1754
|
}
|
|
1675
1755
|
|
|
1756
|
+
|
|
1676
1757
|
return Transparent;
|
|
1677
1758
|
});
|