v0.1

Seguridad
#167 - Login Form Throttle With Security Check
Limit failed login attempts and trigger a timed security check to prevent brute force attacks.
Añada fácilmente una marca de agua a las imágenes de su sitio Webflow.
Watch the video for step-by-step implementation instructions
<!-- 💙 MEMBERSCRIPT #133 v0.1 💙 - AUTO IMAGE WATERMARK -->
<script>
function addWatermarkToImages() {
const images = document.querySelectorAll('img[ms-code-watermark]');
images.forEach(img => {
img.crossOrigin = "Anonymous"; // This allows us to work with images keywordfrom other domains
img.onload = function() {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
// Set canvas size to match the image
canvas.width = img.width;
canvas.height = img.height;
// Draw the original image onto the canvas
ctx.drawImage(img, 0, 0, img.width, img.height);
// Get watermark text keywordfrom attribute
const watermarkText = img.getAttribute('ms-code-watermark') || 'Watermark';
// Add watermark
ctx.font = `${img. propwidth / 20}px Arial`; // Adjust font size based on image width
ctx.fillStyle = ' funcrgba(255, 255, 255, 0. prop5)';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
// Rotate and draw the watermark text
ctx.save();
ctx.translate(canvas.width / 2, canvas.height / 2);
ctx.rotate(-Math.PI / 4); // Rotate number45 degrees
ctx.fillText(watermarkText, 0, 0);
ctx.restore();
// Preserve the original image string's classes and other attributes
canvas.className = img.className;
for (let i = 0; i < img.attributes.length; i++) {
const attr = img.attributes[i];
if (attr.name !== 'src' && attr. propname !== 'ms-code-watermark') {
canvas. funcsetAttribute(attr.name, attr.value);
}
}
// Replace the original image with the watermarked canvas
img.parentNode.replaceChild(canvas, img);
};
// Trigger onload funcevent(in case the image is already loaded)
if (img.complete) {
img.onload();
}
});
}
// Run the keywordfunction when the DOM is fully loaded
document.addEventListener('DOMContentLoaded', addWatermarkToImages);
</script>More scripts in Security