ar isPopupVisible = false; // 悬浮窗显示状态 function previewImage(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { var img = document.createElement("img"); img.src = e.target.result; img.alt = "照片"; // 隐藏原始的input元素 input.style.display = "none"; // 添加图片到input元素的父节点 input.parentNode.appendChild(img); // 启用点击事件处理函数 img.onclick = function () { if (isPopupVisible) { showPopup(img.src); // 点击图片放大时显示悬浮窗 } }; isPopupVisible = true; // 图片已经添加,启用点击事件处理函数 }; reader.readAsDataURL(input.files[0]); } }这是修改后的代码,在添加图片时仍然直接弹出悬浮窗
时间: 2024-04-17 11:27:40 浏览: 132
非常抱歉,我之前的回答仍然有误。要解决这个问题,你可以在 `previewImage` 函数中添加一个变量来记录是否点击图片,只有在点击图片后才显示悬浮窗。以下是修改后的代码示例:
```javascript
var isImageClicked = false; // 图片是否被点击的标记
function previewImage(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
var img = document.createElement("img");
img.src = e.target.result;
img.alt = "照片";
// 隐藏原始的input元素
input.style.display = "none";
// 添加图片到input元素的父节点
input.parentNode.appendChild(img);
// 点击图片时改变标记值
img.onclick = function () {
isImageClicked = true;
showPopup(img.src); // 点击图片放大时显示悬浮窗
};
};
reader.readAsDataURL(input.files[0]);
}
}
var isPopupVisible = false; // 悬浮窗显示状态
function showPopup(src) {
if (!isPopupVisible && isImageClicked) { // 只有在悬浮窗未显示且图片被点击时才显示悬浮窗
var overlay = document.createElement("div");
// 悬浮窗的样式和逻辑...
// ...
isPopupVisible = true; // 设置悬浮窗显示状态为true
}
}
```
通过添加 `isImageClicked` 变量来判断图片是否被点击,只有在图片被点击后,才会显示悬浮窗。这样可以避免在添加图片时直接弹出悬浮窗。请尝试使用上述修改后的代码。如果仍然遇到问题,请提供更详细的代码和相关描述,以便我更好地帮助你解决问题。
阅读全文