读取json返回到html中<p>里的内容丢失

直接append会变成......,并不是预期的..........

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>商品详情</title> <link rel="stylesheet" href="styles.css"> </head> <body> <header> <h1><a href="index.html">我的电商网站</a></h1> <nav> <a href="index.html">首页</a> <a href="cart.html">购物车</a> </nav> </header> <main> <section id="product-detail"> <button onclick="goBack()" style="margin-bottom: 20px;">返回</button> <img id="product-image" src="" alt="商品大图"> <h2 id="product-name"></h2> <p id="product-description"></p> <p>价格:<span id="product-price">$0</span></p> <div class="quantity-selector"> <button onclick="changeQuantity(-1)">-</button> <input type="text" id="quantity" value="1" readonly> <button onclick="changeQuantity(1)">+</button> </div> <button onclick="addToCartFromDetail()">加入购物车</button> </section> </main> <footer> <p>© 2023 我的电商网站</p> </footer> <script> window.onload = function () { const product = JSON.parse(sessionStorage.getItem('currentProduct')); if (product) { document.getElementById('product-image').src = product.image; document.getElementById('product-name').textContent = product.name; document.getElementById('product-price').textContent = `$${product.price}`; document.getElementById('product-description').textContent = product.description; } }; // 返回上一页 function goBack() { window.history.back(); } // 调整商品数量 function changeQuantity(delta) { const quantityInput = document.getElementById('quantity'); let currentQuantity = parseInt(quantityInput.value, 10); currentQuantity += delta; if (currentQuantity < 1) { currentQuantity = 1; // 最小数量为1 } quantityInput.value = currentQuantity; } // 从商品详情页加入购物车 function addToCartFromDetail() { const product = JSON.parse(sessionStorage.getItem('currentProduct')); if (product) { const quantityInput = document.getElementById('quantity'); const quantity = parseInt(quantityInput.value, 10); for (let i = 0; i < quantity; i++) { addToCart(product.name, product.price); } alert(`${quantity} 件 ${product.name} 已成功加入购物车!`); } } </script> </body> </html>修改成正确的
05-23
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>电子商务网站</title> <link rel="stylesheet" href="styles.css"> <!--引入网站图标--> <link rel="icon" href="C:\Users\lenovo\Pictures\黄子\0076wjjTly1hjti34wishj30si0sijtv.jpg"> <style> /* styles.css */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; } header { background-color: #4CAF50; color: white; padding: 10px 20px; text-align: center; } nav a { margin: 0 10px; color: white; text-decoration: none; } main { padding: 20px; } .product-grid { display: flex; gap: 20px; flex-wrap: wrap; } .product-item { border: 1px solid #ccc; padding: 10px; width: 200px; text-align: center; } .product-item img { max-width: 100%; height: auto; } #cart { margin-top: 20px; } #cart-list { list-style-type: none; padding: 0; } #cart-list li { margin: 5px 0; } footer { text-align: center; padding: 10px; background-color: #f9f9f9; margin-top: 20px; } </style> </head> <body> <header> <h1>我的电商网站</h1> <nav> <input type="text" id="search-box" placeholder="搜索商品..." oninput="filterProducts()"> <select id="category-filter" onchange="filterByCategory()"> <option value="all">所有类别</option> <option value="novel">小说</option> <option value="history">历史</option> <option value="science">科普</option> </select> <a href="#products">商品列表</a> <a href="#cart">购物车</a> </nav> </header> <main> <section id="products"> <h2>商品列表</h2> <div class="product-grid"> <div class="product-item" data-category="novel" onclick="goToDetail('产品1:红楼梦', 'https://tse4-mm.cn.bing.net/th/id/OIP-C.E1l9GHWnkbNLjcnJpqTpPAHaKC?rs=1&pid=ImgDetMain', '$50', '《红楼梦》是中国古典四大名著之一。')"> <img src="https://tse4-mm.cn.bing.net/th/id/OIP-C.E1l9GHWnkbNLjcnJpqTpPAHaKC?rs=1&pid=ImgDetMain" alt="产品1"> <h3>产品1:红楼梦</h3> <p>价格:$50</p> <button onclick="addToCart('产品1:红楼梦', 50)">添加到购物车</button> </div> <div class="product-item" data-category="novel"> <img src="https://ts1.tc.mm.bing.net/th/id/R-C.115539104325e27be2f0ee05ca4c080b?rik=xSg%2bwFfcC1%2b2QQ&riu=http%3a%2f%2fimages.bookuu.com%2fbook%2fC%2f01638%2f2634742-fm.jpg&ehk=H9B6G0WCUFgsQjHJE1iAtNWwpFnhmdAg30ByUapdJfY%3d&risl=&pid=ImgRaw&r=0" alt="产品2"> <h3>产品2:西游记</h3> <p>价格:$75</p> <button onclick="addToCart('产品2:西游记', 75)">添加到购物车</button> </div> <div class="product-item" data-category="novel"> <img src="https://tse3-mm.cn.bing.net/th/id/OIP-C.3JrruqZy-PznYJxAHsoUdAHaKe?rs=1&pid=ImgDetMain" alt="产品3"> <h3>产品3:水浒传</h3> <p>价格:$100</p> <button onclick="addToCart('产品3:水浒传', 100)">添加到购物车</button> </div> <div class="product-item" data-category="novel"> <img src="https://ts1.tc.mm.bing.net/th/id/R-C.741a4e06ace8ed3a2a47d2a7fc53efa6?rik=OTex%2bIz3NhB3vw&riu=http%3a%2f%2fsdwypress.com%2fuploads%2fimage%2f2106%2f24%2f210624143125esxhc.jpg&ehk=bJB%2f6p6aW7wkHHbCiUTcnRf%2bNLwOktGxYScy28rgjwg%3d&risl=&pid=ImgRaw&r=0" alt="产品2"> <h3>产品4:三国演义</h3> <p>价格:$55</p> <button onclick="addToCart('产品4:三国演义', 55)">添加到购物车</button> </div> <div class="product-item" data-category="novel"> <img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.4tBovpeIT27lEOj0FuFT5QHaKu?rs=1&pid=ImgDetMain" alt="产品2"> <h3>产品5:红岩</h3> <p>价格:$65</p> <button onclick="addToCart('产品5:红岩', 65)">添加到购物车</button> </div> <div class="product-item" data-category="history"> <img src="https://tse4-mm.cn.bing.net/th/id/OIP-C.PgSOBNz_XC3Q2b_O9Nkh-wHaLS?rs=1&pid=ImgDetMain" alt="产品2"> <h3>产品6:开放中的变迁</h3> <p>价格:$50</p> <button onclick="addToCart('产品6:开放中的变迁', 50)">添加到购物车</button> </div> <div class="product-item" data-category="history"> <img src="https://tse2-mm.cn.bing.net/th/id/OIP-C.1O2NDFn3NcQ5UtfKVUX9qwHaLD?rs=1&pid=ImgDetMain" alt="产品2"> <h3>产品7:中国近代史</h3> <p>价格:$55</p> <button onclick="addToCart('产品7:中国近代史', 55)">添加到购物车</button> </div> <div class="product-item" data-category="history"> <img src="https://img3.doubanio.com/lpic/s27258223.jpg" alt="产品2"> <h3>产品8:国史大纲</h3> <p>价格:$65</p> <button onclick="addToCart('产品8:国史大纲', 65)">添加到购物车</button> </div> <div class="product-item" data-category="science"> <img src="https://so1.360tres.com/t0151ae7fb7ec6d8870.jpg" alt="产品2"> <h3>产品9:时间简史</h3> <p>价格:$65</p> <button onclick="addToCart('产品9:时间简史', 65)">添加到购物车</button> </div> <div class="product-item" data-category="science"> <img src="https://img.alicdn.com/bao/uploaded/i1/3715517208/O1CN01yttyGV237JTlFwGhn_!!0-item_pic.jpg" alt="产品2"> <h3>产品10:从一到无穷大:科学中的事实和臆测</h3> <p>价格:$65</p> <button onclick="addToCart('产品10:从一到无穷大:科学中的事实和臆测', 65)">添加到购物车</button> </div> </div> </section> <section id="cart"> <h2>购物车</h2> <ul id="cart-list"></ul> <p>总价:<span id="total-price">$0</span></p> <button onclick="checkout()">结算</button> </section> </main> <footer> <p>© 2023 我的电商网站</p> </footer> <script> // script.js function goToDetail(name, image, price, description) { const product = { name: name, image: image, price: parseFloat(price.replace('$', '')), description: description }; sessionStorage.setItem('currentProduct', JSON.stringify(product)); // 存储当前商品信息 window.location.href = '444.html'; // 跳转到详情页 } function filterByCategory() { const selectedCategory = document.getElementById('category-filter').value; // 获取选中的类别 const productItems = document.querySelectorAll('.product-item'); // 获取所有商品卡片 productItems.forEach(item => { const category = item.getAttribute('data-category'); // 获取商品类别 if (selectedCategory === 'all' || category === selectedCategory) { item.style.display = 'block'; // 如果匹配,则显示商品 } else { item.style.display = 'none'; // 否则隐藏商品 } }); } function filterProducts() { const query = document.getElementById('search-box').value.toLowerCase(); // 获取搜索框内容并转为小写 const productItems = document.querySelectorAll('.product-item'); // 获取所有商品卡片 productItems.forEach(item => { const productName = item.querySelector('h3').textContent.toLowerCase(); // 获取商品名称并转为小写 if (productName.includes(query)) { item.style.display = 'block'; // 如果匹配,则显示商品 } else { item.style.display = 'none'; // 否则隐藏商品 } }); } let cart = []; // 购物车数组 // 添加商品到购物车 function addToCart(name, price) { const existingItem = cart.find(item => item.name === name); if (existingItem) { existingItem.quantity += 1; // 如果商品已存在,增加数量 } else { cart.push({ name, price, quantity: 1 }); // 否则新增商品 } updateCart(); } // 更新购物车显示 function updateCart() { const cartList = document.getElementById('cart-list'); const totalPriceElement = document.getElementById('total-price'); // 清空购物车列表 cartList.innerHTML = ''; let totalPrice = 0; // 遍历购物车中的商品并更新显示 cart.forEach((item, index) => { const li = document.createElement('li'); li.textContent = `${item.name} x${item.quantity} - $${item.price * item.quantity}`; // 添加删除按钮 const deleteButton = document.createElement('button'); deleteButton.textContent = '删除'; deleteButton.onclick = () => removeFromCart(index); // 绑定删除事件 li.appendChild(deleteButton); cartList.appendChild(li); totalPrice += item.price * item.quantity; }); // 更新总价 totalPriceElement.textContent = `$${totalPrice}`; } // 从购物车中移除商品 function removeFromCart(index) { cart.splice(index, 1); // 根据索引移除商品 updateCart(); // 更新购物车显示 } function checkout() { if (cart.length === 0) { alert('购物车为空,请添加商品!'); } else { alert(`您已成功结算!总价为:$${document.getElementById('total-price').textContent}`); cart = []; updateCart(); } } </script> </body> </html>增么让页面333.html和页面index.html联系正确index.html代码为<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>商品详情</title> <link rel="stylesheet" href="styles.css"> </head> <body> <header> <h1><a href="index.html">我的电商网站</a></h1> <nav> <a href="index.html">首页</a> <a href="cart.html">购物车</a> </nav> </header> <main> <section id="product-detail"> <button onclick="goBack()" style="margin-bottom: 20px;">返回</button> <img id="product-image" src="" alt="商品大图"> <h2 id="product-name"></h2> <p id="product-description"></p> <p>价格:<span id="product-price">$0</span></p> <div class="quantity-selector"> <button onclick="changeQuantity(-1)">-</button> <input type="text" id="quantity" value="1" readonly> <button onclick="changeQuantity(1)">+</button> </div> <button onclick="addToCartFromDetail()">加入购物车</button> </section> </main> <footer> <p>© 2023 我的电商网站</p> </footer> <script> window.onload = function () { const product = JSON.parse(sessionStorage.getItem('currentProduct')); if (product) { document.getElementById('product-image').src = product.image; document.getElementById('product-name').textContent = product.name; document.getElementById('product-price').textContent = `$${product.price}`; document.getElementById('product-description').textContent = product.description; } }; // 返回上一页 function goBack() { window.history.back(); } // 调整商品数量 function changeQuantity(delta) { const quantityInput = document.getElementById('quantity'); let currentQuantity = parseInt(quantityInput.value, 10); currentQuantity += delta; if (currentQuantity < 1) { currentQuantity = 1; // 最小数量为1 } quantityInput.value = currentQuantity; } // 从商品详情页加入购物车 function addToCartFromDetail() { const product = JSON.parse(sessionStorage.getItem('currentProduct')); if (product) { const quantityInput = document.getElementById('quantity'); const quantity = parseInt(quantityInput.value, 10); for (let i = 0; i < quantity; i++) { addToCart(product.name, product.price); } alert(`${quantity} 件 ${product.name} 已成功加入购物车!`); } } </script> </body> </html>
05-23
<!DOCTYPE html> <html lang="zh-CN" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>我的订单</title> <!-- 引入Bootstrap + 图标库(首页同款) --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet"> <style> /* 全局布局:左侧导航+右侧内容(保持原有) */ body { display: flex; min-height: 100vh; margin: 0; background-color: #f5f7fa; font-family: "Microsoft YaHei", sans-serif; } /* 左侧导航栏:同步首页风格(图标+悬停浮动+选中高亮) */ .sidebar { width: 220px; background-color: #2c3e50; color: #fff; padding: 20px 0; box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1); position: fixed; height: 100%; z-index: 1000; } .sidebar-brand { font-size: 18px; font-weight: 600; text-align: center; padding: 0 20px 20px; border-bottom: 1px solid #34495e; margin-bottom: 20px; } .sidebar-brand i { color: #3498db; margin-right: 8px; } .sidebar-nav { list-style: none; padding: 0; margin: 0; } .sidebar-nav li { padding: 0 15px; } .sidebar-nav a { color: #ecf0f1; text-decoration: none; display: flex; align-items: center; padding: 12px 15px; border-radius: 6px; transition: all 0.3s ease; transform: translateY(0); /* 初始位置,为浮动效果准备 */ } /* 图标样式(首页同款) */ .sidebar-nav a i { width: 20px; margin-right: 10px; opacity: 0.8; } /* 悬停效果:浮动+背景高亮(首页同款) */ .sidebar-nav a:hover { color: #3498db; background-color: rgba(255, 255, 255, 0.08); transform: translateY(-3px); /* 向上浮动3px */ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); /* 浮动阴影 */ } /* 选中状态(首页同款:左侧蓝色边框+浅背景) */ .sidebar-nav a.active { color: #3498db; background-color: rgba(52, 152, 219, 0.15); border-left: 3px solid #3498db; font-weight: 500; } /* 退出登录特殊样式(首页同款红色) */ .sidebar-nav a.logout-link { color: #ff7675; } .sidebar-nav a.logout-link:hover { color: #ff7675; background-color: rgba(255, 118, 117, 0.1); transform: translateY(-3px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); } /* 右侧内容区域(保持原有) */ .main-content { flex: 1; margin-left: 220px; padding: 30px; width: calc(100% - 220px); } /* 订单页专属样式(保持原有) */ .page-title { color: #2c3e50; font-weight: 600; margin-bottom: 30px; } .table-container { background-color: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); } /* 支付按钮样式(和取消按钮区分) */ .btn-pay { background-color: #198754; color: #fff; margin-right: 8px; } .btn-pay:hover { background-color: #157347; color: #fff; } </style> </head> <body> <!-- 左侧导航栏:同步首页结构(添加图标+统一样式) --> <div class="sidebar"> <div class="sidebar-brand"> <i class="fa fa-car"></i> <span>停车管理系统</span> </div> <ul class="sidebar-nav"> <li><a href="/"> <i class="fa fa-home"></i> <span>首页(车位预约)</span> </a></li> <li><a href="/user/profile"> <i class="fa fa-user"></i> <span>个人中心</span> </a></li> <li><a href="/user/orders" class="active"> <i class="fa fa-list-alt"></i> <span>我的订单</span> </a></li> <!-- 当前页高亮 --> <li><a href="/user/notices"> <i class="fa fa-bullhorn"></i> <span>系统公告</span> </a></li> <li><a href="/logout" class="logout-link"> <i class="fa fa-sign-out"></i> <span>退出登录</span> </a></li> </ul> </div> <!-- 右侧主内容(订单页专属,保持原有) --> <div class="main-content"> <h2 class="page-title">我的订单</h2> <!-- 操作结果提示 --> <th:block th:if="${param.cancelSuccess}"> <div class="alert alert-success">订单取消成功!</div> </th:block> <th:block th:if="${param.cancelError}"> <div class="alert alert-danger">订单取消失败!</div> </th:block> <th:block th:if="${param.paySuccess}"> <div class="alert alert-success">支付成功!已结清费用,可正常预约新车位~</div> </th:block> <th:block th:if="${param.payError}"> <div class="alert alert-danger">支付失败,请重试!</div> </th:block> <!-- 订单表格容器 --> <div class="table-container"> <table class="table table-striped"> <thead> <tr> <th>订单ID</th> <th>车位编号</th> <th>车牌号</th> <th>预约时间</th> <th>结束时间</th> <th>总费用</th> <th>订单状态</th> <th>操作</th> </tr> </thead> <tbody> <th:block th:each="item : ${orderWithSpace}"> <tr> <td th:text="${item.order.id}"></td> <td th:text="${item.space.number}"></td> <td th:text="${item.order.licensePlate}"></td> <td th:text="${#temporals.format(item.order.startTime, 'yyyy-MM-dd HH:mm')}"></td> <td th:text="${#temporals.format(item.order.endTime, 'yyyy-MM-dd HH:mm')}"></td> <td th:text="${item.order.totalFee} + ' 元'"></td> <td th:text="${item.order.status}"></td> <!-- 操作列 --> <td> <th:block th:if="${item.order.status == '已预约'}"> <a th:href="@{/user/order/cancel/{id}(id=${item.order.id})}" class="btn btn-warning btn-sm">取消预约</a> </th:block> <th:block th:if="${item.order.status == '已完成'}"> <th:block th:if="${item.isUnpaid}"> <a th:href="@{/pay(orderId=${item.order.id})}" class="btn btn-sm btn-pay">支付</a> </th:block> <th:block th:unless="${item.isUnpaid}"> <span class="btn btn-sm" style="background-color: #198754; color: #fff;">已支付</span> </th:block> </th:block> <th:block th:unless="${item.order.status == '已预约' or item.order.status == '已完成'}"> <span class="btn btn-sm" style="background-color: #6c757d; color: #fff;">无操作</span> </th:block> </td> </tr> </th:block> <tr th:if="${orderWithSpace.isEmpty()}"> <td colspan="8" class="text-center">暂无订单记录</td> </tr> </tbody> </table> </div> </div> <!-- Bootstrap脚本(保持原有) --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>我想在这上面增添一个余额页面,能不能通过script来实现订单扣除余额的作用
最新发布
12-02
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>向火独行 - COC文字冒险</title> <style> @import url(../css/tongyong/root.css); @import url(../css/tongyong/quanju.css); @import url("../css/tongyong/body.css"); .container { max-width: 800px; margin: 0 auto; border: 1px solid var(--accent-color); padding: 20px; box-shadow: 0 0 15px rgba(139, 0, 0, 0.3); background-color: rgba(10, 10, 10, 0.9); position: relative; min-height: 80vh; } header { text-align: center; margin-bottom: 20px; border-bottom: 1px solid var(--accent-color); padding-bottom: 15px; } h1 { color: var(--highlight-color); font-size: 2.2rem; letter-spacing: 2px; text-shadow: 0 0 5px rgba(212, 175, 55, 0.5); } .game-area { display: flex; flex-direction: column; gap: 20px; } .stats-panel { display: flex; justify-content: space-between; background-color: rgba(20, 20, 20, 0.8); padding: 10px; border: 1px solid var(--accent-color); font-size: 0.9rem; } .story-text { background-color: rgba(15, 15, 15, 0.8); padding: 20px; border: 1px solid var(--accent-color); min-height: 250px; max-height: 400px; overflow-y: auto; line-height: 1.8; } .choices-container { display: flex; flex-direction: column; gap: 10px; } .choice-btn { background-color: rgba(30, 30, 30, 0.8); color: var(--text-color); border: 1px solid var(--accent-color); padding: 12px; text-align: left; cursor: pointer; transition: all 0.3s; } .choice-btn:hover { background-color: rgba(50, 50, 50, 0.8); border-color: var(--highlight-color); color: var(--highlight-color); } .controls { display: flex; justify-content: space-between; margin-top: 20px; } button { background-color: var(--accent-color); color: white; border: none; padding: 10px 15px; cursor: pointer; transition: background-color 0.3s; } button:hover { background-color: #a00; } .save-load-container { display: flex; gap: 10px; } .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.8); z-index: 100; justify-content: center; align-items: center; } .modal-content { background-color: var(--dark-color); border: 2px solid var(--accent-color); padding: 20px; width: 80%; max-width: 500px; } .save-slots { display: flex; flex-direction: column; gap: 10px; margin: 15px 0; } .save-slot { background-color: rgba(30, 30, 30, 0.8); padding: 10px; border: 1px solid var(--accent-color); display: flex; justify-content: space-between; align-items: center; } .save-slot:hover { border-color: var(--highlight-color); } .save-info { flex-grow: 1; cursor: pointer; } .delete-btn { background-color: var(--danger-color); padding: 5px 10px; font-size: 0.8rem; } .delete-btn:hover { background-color: #e53e3e; } .fade-in { animation: fadeIn 0.5s; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .typing-effect { overflow: hidden; border-right: 2px solid var(--highlight-color); white-space: nowrap; margin: 0 auto; animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite; } @keyframes typing { from { width: 0 } to { width: 100% } } @keyframes blink-caret { from, to { border-color: transparent } 50% { border-color: var(--highlight-color) } } </style> </head> <body> <div class="container"> <header> <h1>向火独行</h1> <p>克苏鲁的呼唤文字冒险游戏</p> </header> <div class="game-area"> <div class="stats-panel"> <div>理智: <span id="sanity-value">80</span>/100</div> <div>生命: <span id="health-value">100</span>/100</div> <div>时间: <span id="time-value">第1天 - 早晨</span></div> <div>地点: <span id="location-value">阿卡姆</span></div> </div> <div class="story-text" id="story-text"> <!-- 故事文本将通过JavaScript动态加载 --> </div> <div class="choices-container" id="choices-container"> <!-- 选择按钮将通过JavaScript动态生成 --> </div> <div class="controls"> <div class="save-load-container"> <button id="save-btn">保存游戏</button> <button id="load-btn">读取游戏</button> </div> <button id="reset-btn">重新开始</button> <button id="back-to-menu-btn">返回主菜单</button> </div> </div> </div> <!-- 存档/读档模态框 --> <div class="modal" id="save-modal"> <div class="modal-content"> <h3>保存游戏</h3> <p>选择一个存档位保存当前游戏进度:</p> <div class="save-slots" id="save-slots"> <!-- 存档槽位将通过JavaScript动态生成 --> </div> <div style="text-align: right;"> <button id="close-save-modal">关闭</button> </div> </div> </div> <div class="modal" id="load-modal"> <div class="modal-content"> <h3>读取游戏</h3> <p>选择一个存档位加载游戏进度:</p> <div class="save-slots" id="load-slots"> <!-- 存档槽位将通过JavaScript动态生成 --> </div> <div style="text-align: right;"> <button id="close-load-modal">关闭</button> </div> </div> </div> <script> // 游戏状态 const gameState = { currentScene: "start", sanity: 80, health: 100, time: { day: 1, period: "早晨" }, location: "阿卡姆", inventory: [], flags: {} }; // 游戏场景数据 const scenes = { "start": { text: "1926年秋天,你收到了一封来自远方亲戚的信件。信中提到了一个名为'哈德利遗产'的神秘事件,并邀请你前往马萨诸塞州的阿卡姆镇。作为一名对超自然现象充满好奇的调查员,你决定接受这个邀请。\n\n火车缓缓驶入阿卡姆车站,空气中弥漫着潮湿的霉味和某种难以名状的不安。你提着行李走下火车,站台上几乎空无一人。", choices: [ { text: "直接前往信中提到的大宅", nextScene: "mansion_approach", effect: () => gameState.time.period = "下午" }, { text: "先在镇上打听消息", nextScene: "town_inquiry", effect: () => { gameState.time.period = "中午"; gameState.sanity -= 5; } }, { text: "去旅馆休息一晚", nextScene: "hotel", effect: () => { gameState.time.day = 2; gameState.time.period = "早晨"; } } ] }, "mansion_approach": { text: "你按照地址找到了那座位于镇郊的大宅。它看起来年久失修,但依然能看出昔日的辉煌。铁门锈迹斑斑,庭院杂草丛生。当你走近时,注意到二楼的一个窗户似乎有微弱的灯光一闪而过。", choices: [ { text: "敲门", nextScene: "mansion_knock" }, { text: "尝试从后门进入", nextScene: "mansion_backdoor", condition: () => gameState.flags.hasLockpick || Math.random() > 0.7 }, { text: "先绕房子观察一圈", nextScene: "mansion_observe" } ] }, "town_inquiry": { text: "你走进镇上唯一还在营业的酒馆。面只有寥寥几位客人,他们看到你进来后都停止了交谈,用警惕的目光打量着你。酒保擦拭着杯子,头也不抬地问:'外地人?需要什么?'", choices: [ { text: "询问关于哈德利家族的事", nextScene: "ask_hadley" }, { text: "打听镇上最近有什么怪事", nextScene: "ask_strange" }, { text: "只是点一杯酒", nextScene: "order_drink" } ] }, "mansion_knock": { text: "你敲了敲厚重的木门,门吱呀一声缓缓打开。门后站着一位面容憔悴的老管家,他用浑浊的眼睛打量着你。'您是哈德利先生提到的客人吗?请进。'他的声音沙哑而低沉。", choices: [ { text: "跟随管家进入", nextScene: "mansion_enter" }, { text: "询问管家关于这座宅邸的历史", nextScene: "ask_butler" }, { text: "表示想先在外面看看", nextScene: "mansion_approach" } ] }, "mansion_enter": { text: "你步入昏暗的大厅,空气中弥漫着灰尘和霉味。墙上挂着几幅肖像画,画中人物的眼睛似乎都在注视着你。管家带你来到书房,壁炉的火苗微弱地跳动着。", choices: [ { text: "询问遗产的具体内容", nextScene: "ask_inheritance" }, { text: "要求看看宅邸的其他部分", nextScene: "mansion_tour" }, { text: "表示旅途劳累需要休息", nextScene: "mansion_rest" } ] }, "ask_hadley": { text: "'哈德利家族?'酒保的表情变得严肃,'他们很久以前就离开了这个镇子。有人说他们惹上了不该惹的东西。我建议你不要打听太多。'周围的客人听到你们的对话,纷纷低下头,避免与你有眼神接触。", choices: [ { text: "坚持询问更多细节", nextScene: "insist_hadley", effect: () => gameState.sanity -= 10 }, { text: "改变话题,询问镇上住宿", nextScene: "ask_accommodation" }, { text: "离开酒馆", nextScene: "start" } ] }, "hotel": { text: "你在镇上唯一的旅馆住下。房间简陋但干净。夜晚,你被一阵奇怪的声响惊醒,仿佛有人在走廊上低语。当你仔细聆听时,声音又消失了。", choices: [ { text: "起身查看", nextScene: "hotel_investigate", effect: () => gameState.sanity -= 5 }, { text: "继续睡觉", nextScene: "hotel_sleep" }, { text: "收拾行李准备离开", nextScene: "start" } ] } // 更多场景可以继续添加... }; // DOM元素 const storyTextElement = document.getElementById('story-text'); const choicesContainer = document.getElementById('choices-container'); const sanityValueElement = document.getElementById('sanity-value'); const healthValueElement = document.getElementById('health-value'); const timeValueElement = document.getElementById('time-value'); const locationValueElement = document.getElementById('location-value'); const saveBtn = document.getElementById('save-btn'); const loadBtn = document.getElementById('load-btn'); const resetBtn = document.getElementById('reset-btn'); const saveModal = document.getElementById('save-modal'); const loadModal = document.getElementById('load-modal'); const saveSlotsElement = document.getElementById('save-slots'); const loadSlotsElement = document.getElementById('load-slots'); const closeSaveModal = document.getElementById('close-save-modal'); const closeLoadModal = document.getElementById('close-load-modal'); // 初始化游戏 function initGame() { updateGameState(); renderScene(gameState.currentScene); } // 渲染场景 function renderScene(sceneId) { const scene = scenes[sceneId]; if (!scene) { storyTextElement.textContent = "游戏内容开发中..."; choicesContainer.innerHTML = ""; return; } // 更新故事文本 storyTextElement.textContent = scene.text; storyTextElement.classList.add('fade-in'); // 清除旧的选择按钮 choicesContainer.innerHTML = ""; // 创建新的选择按钮 scene.choices.forEach(choice => { // 检查条件(如果有) if (choice.condition && !choice.condition()) { return; } const button = document.createElement('button'); button.className = 'choice-btn'; button.textContent = choice.text; button.addEventListener('click', () => { // 执行效果(如果有) if (choice.effect) { choice.effect(); } // 更新当前场景 gameState.currentScene = choice.nextScene; // 更新游戏状态显示 updateGameState(); // 渲染新场景 renderScene(choice.nextScene); }); choicesContainer.appendChild(button); }); // 移除淡入动画类,以便下次可以重新添加 setTimeout(() => { storyTextElement.classList.remove('fade-in'); }, 500); } // 更新游戏状态显示 function updateGameState() { sanityValueElement.textContent = gameState.sanity; healthValueElement.textContent = gameState.health; timeValueElement.textContent = `第${gameState.time.day}天 - ${gameState.time.period}`; locationValueElement.textContent = gameState.location; } // 存档功能 function saveGame(slot) { const saveData = { gameState: JSON.parse(JSON.stringify(gameState)), // 深拷贝 timestamp: new Date().toLocaleString() }; localStorage.setItem(`coc_firealone_save_${slot}`, JSON.stringify(saveData)); alert(`游戏已保存到存档位 ${slot}`); updateSaveSlotsDisplay(); } // 读档功能 function loadGame(slot) { const saveData = localStorage.getItem(`coc_firealone_save_${slot}`); if (saveData) { const parsedData = JSON.parse(saveData); Object.assign(gameState, parsedData.gameState); updateGameState(); renderScene(gameState.currentScene); alert(`已从存档位 ${slot} 加载游戏`); loadModal.style.display = 'none'; } else { alert(`存档位 ${slot} 为空`); } } // 删除存档 function deleteSave(slot, isSaveModal = false) { if (confirm(`确定要删除存档位 ${slot} 的存档吗?`)) { localStorage.removeItem(`coc_firealone_save_${slot}`); updateSaveSlotsDisplay(); if (!isSaveModal) { updateLoadSlotsDisplay(); } } } // 更新存档槽位显示 function updateSaveSlotsDisplay() { saveSlotsElement.innerHTML = ""; for (let i = 1; i <= 5; i++) { const slot = document.createElement('div'); slot.className = 'save-slot'; const saveData = localStorage.getItem(`coc_firealone_save_${i}`); let slotText = `存档位 ${i}`; const infoDiv = document.createElement('div'); infoDiv.className = 'save-info'; if (saveData) { const parsedData = JSON.parse(saveData); slotText += ` - ${parsedData.timestamp}`; infoDiv.textContent = slotText; infoDiv.addEventListener('click', () => saveGame(i)); } else { slotText += ` - 空`; infoDiv.textContent = slotText; infoDiv.addEventListener('click', () => saveGame(i)); } slot.appendChild(infoDiv); // 如果有存档,添加删除按钮 if (saveData) { const deleteBtn = document.createElement('button'); deleteBtn.className = 'delete-btn'; deleteBtn.textContent = '删除'; deleteBtn.addEventListener('click', (e) => { e.stopPropagation(); // 防止触发存档事件 deleteSave(i, true); }); slot.appendChild(deleteBtn); } saveSlotsElement.appendChild(slot); } } // 更新读取槽位显示 function updateLoadSlotsDisplay() { loadSlotsElement.innerHTML = ""; for (let i = 1; i <= 5; i++) { const slot = document.createElement('div'); slot.className = 'save-slot'; const saveData = localStorage.getItem(`coc_firealone_save_${i}`); let slotText = `存档位 ${i}`; const infoDiv = document.createElement('div'); infoDiv.className = 'save-info'; if (saveData) { const parsedData = JSON.parse(saveData); slotText += ` - ${parsedData.timestamp}`; infoDiv.textContent = slotText; infoDiv.addEventListener('click', () => loadGame(i)); } else { slotText += ` - 空`; infoDiv.textContent = slotText; infoDiv.style.cursor = 'default'; } slot.appendChild(infoDiv); // 如果有存档,添加删除按钮 if (saveData) { const deleteBtn = document.createElement('button'); deleteBtn.className = 'delete-btn'; deleteBtn.textContent = '删除'; deleteBtn.addEventListener('click', (e) => { e.stopPropagation(); // 防止触发加载事件 deleteSave(i, false); }); slot.appendChild(deleteBtn); } loadSlotsElement.appendChild(slot); } } // 显示存档模态框 function showSaveModal() { updateSaveSlotsDisplay(); saveModal.style.display = 'flex'; } // 显示读档模态框 function showLoadModal() { updateLoadSlotsDisplay(); loadModal.style.display = 'flex'; } //返回主界面 function backToMainMenu() { if (confirm("确定要返回主菜单吗?当前游戏进度将丢失。")) { window.location.href = 'kaishi.html'; } } // 重新开始事件监听器 saveBtn.addEventListener('click', showSaveModal); loadBtn.addEventListener('click', showLoadModal); resetBtn.addEventListener('click', () => { if (confirm("确定要重新开始游戏吗?当前进度将丢失。")) { // 重置游戏状态 Object.assign(gameState, { currentScene: "start", sanity: 80, health: 10, time: { day: 1, period: "早晨" }, location: "阿卡姆", inventory: [], flags: {} }); updateGameState(); renderScene(gameState.currentScene); } }); closeSaveModal.addEventListener('click', () => { saveModal.style.display = 'none'; }); closeLoadModal.addEventListener('click', () => { loadModal.style.display = 'none'; }); // 点击模态框外部关闭 window.addEventListener('click', (event) => { if (event.target === saveModal) { saveModal.style.display = 'none'; } if (event.target === loadModal) { loadModal.style.display = 'none'; } }); // 初始化游戏 initGame(); </script> </body> </html> 修复“//返回主界面”对应段落,无法回到“kaishi.html”的问题
11-10
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="javax.servlet.*,java.text.*" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="renderer" content="webkit"> <title>收入综合分析平台</title> <link rel="stylesheet" href="${pageContext.request.contextPath}/resources/bootstrap-3.3.7-dist/css/bootstrap.min.css"> <%-- 右击菜单样式 --%> <link href="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/css/jquery.contextMenu.min.css" rel="stylesheet"/> <%-- <link href="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/css/animate.min.css" rel="stylesheet"/>--%> <link href="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/css/style.min.css" rel="stylesheet"/> <link href="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/css/skins.css" rel="stylesheet"/> <link href="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/css/ry-ui.css?v=4.6.1" rel="stylesheet"/> <%-- 图标库 --%> <link href="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/css/font-awesome.min.css" rel="stylesheet"/> <script src="${pageContext.request.contextPath}/resources/js/jquery-1.11.3.min.js?v=<%=System.currentTimeMillis()%>"></script> <script src="${pageContext.request.contextPath}/resources/bootstrap-3.3.7-dist/js/bootstrap.min.js?v=<%=System.currentTimeMillis()%>"></script> <script src="${pageContext.request.contextPath}/resources/global/global.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript"> $(function(){ $.ajax({ type: 'get', url: "dic/getUrlByUser", async: false, dataType: 'json', success: function (data) {//返回list数据并循环获取 var ht = ""; var arr = ['desktop','calculator','leanpub','map','send','bar-chart','line-chart','train','american-sign-language-interpreting','gears','user-circle-o','paper-plane','firefox']; for(var i=0;i<data.length;i++){ //循环一级菜单 ht = ht +'<li>'+ '<a href="#">' + '<i class="fa fa-'+arr[i]+'"></i> ' + '<span class="nav-label">'+data[i].mkName+'</span>' + '<span class="fa arrow"></span>' + '</a>'+ '<ul class="nav nav-second-level collapse">'; var obj = data[i].obj; if(obj[0].cdlb == ""){//该模块不存在二级菜单 for(var j=0;j<obj.length;j++){ ht = ht + '<li>\n' + '<a class="menuItem" href="'+obj[j].cdUrl+'">'+ obj[j].cdName +'</a>' + '</li>'; } ht = ht + '</ul></li>'; }else{ var cdlbArr = new Array(); for(var j=0;j<obj.length;j++){ cdlbArr.push(obj[j].cdlb); } cdlbArr = uniqueArr(cdlbArr); for(var k=0;k<cdlbArr.length;k++){ ht = ht + '<li>\n' + '<a href="#"><i class="fa fa-pied-piper"></i> '+cdlbArr[k]+'<span class="fa arrow"></span></a>\n' + '<ul class="nav nav-third-level collapse">'; for(var m=0;m<obj.length;m++){ if(cdlbArr[k] == obj[m].cdlb){ ht = ht + '<li>\n' + '<a class="menuItem" href="'+obj[m].cdUrl+'">'+ obj[m].cdName +'</a>' + '</li>'; } } ht = ht + '</ul></li>'; } } ht = ht + '</ul></li>'; } $("#side-menu").append(ht); } }); }) /* * 用于解决浏览器关闭后Cookie未失效,攻击者可在用户关闭浏览器后,通过同一cookie直接访问网站(无需重新登录),窃取用户会话; * 由于ajax是异步 使用时会造成发送不过去的现象 需要使用同步请求 * 另外 如果只是使用 window.addEventListener('beforeunload'来判断 会出现 刷野也会消除session 所以只能通过一下方法来实现 * */ window.addEventListener('beforeunload', function(e) { // 获取导航类型(替代废弃的performance.navigation.type) console.log(JSON.stringify(performance.getEntriesByType("navigation")[0].toJSON().type)) const navType = performance.getEntriesByType("navigation")[0].toJSON().type; sendLogoutRequest(navType) // 排除刷新行为,仅在离开/关闭时触发逻辑 if (navType !== 'reload') { console.log('离开页面,执行逻辑') //sendLogoutRequest() return '111'; } }); /*class PageLeaveHandler { constructor() { this.isRefreshing = false; this.pendingUnload = false; this.pendingUnloadnum = 0;//默认值 this.init(); } init() { // 监听刷新快捷键 window.addEventListener('keydown', (e) => { if (e.key === 'F5' || (e.ctrlKey && e.key === 'F5')) { this.isRefreshing = true; } }); // 监听beforeunload事件 window.addEventListener('beforeunload', this.handleBeforeUnload.bind(this)); } handleBeforeUnload(e) { if (this.isRefreshing) { this.pendingUnload = false; return; } //sendLogoutRequest(this.isRefreshing) this.pendingUnload = true; return 1; } } new PageLeaveHandler();*/ function sendLogoutRequest(navType) { const logoutUrl = '${pageContext.request.contextPath}/sys/loginoutall?navType='+navType; if (navigator.sendBeacon) { navigator.sendBeacon(logoutUrl, 'loginoutall'); } else { const xhr = new XMLHttpRequest(); xhr.open('GET', logoutUrl, false); // 同步请求 xhr.timeout = 2000; try { xhr.send(); } catch (e) { // 忽略错误 } } } /*window.addEventListener('beforeunload', function(e) { // 取消事件的默认行为(部分浏览器需要) e.preventDefault(); if(!e.isTrusted){ // 2. 拼接正确的上下文路径(关键:避免404) const logoutUrl = '${pageContext.request.contextPath}/sys/loginoutall'; // 3. 用sendBeacon发送请求,浏览器会优先保证发送完成 if (navigator.sendBeacon) { navigator.sendBeacon(logoutUrl, 'loginoutall'); } else { const xhr = new XMLHttpRequest(); xhr.open('GET', logoutUrl, false); // 同步请求 xhr.timeout = 2000; try { xhr.send(); } catch (e) { } } } });*/ </script> </head> <body class="fixed-sidebar full-height-layout gray-bg skin-blue theme-light" style="overflow: hidden"> <div id="wrapper"> <!--左侧导航开始--> <nav class="navbar-default navbar-static-side" role="navigation"> <div class="nav-close"> <i class="fa fa-times-circle"></i> </div> <a href=""> <li class="logo hidden-xs"> <span class="logo-lg">欢迎${user.username}</span> </li> </a> <div class="sidebar-collapse"> <ul class="nav" id="side-menu"> <li> <div class="user-panel"> <%-- 该位置换谁个人中心地址 --%> <a class="menuItem noactive" title="个人中心" href=""> <div class="hide" text="个人中心"></div> <div class="pull-left image"> <%--<img src="resources/ruoyi/favicon.ico" class="img-circle" alt="User Image">--%> <img src="resources/image/eee.png" class="img-circle" alt="User Image"> </div> </a> <div class="pull-left info"> <%-- 该位置可以加上el表达式 然后读取成登录名即可 --%> <p></p> <a href="#"><i class="fa fa-circle text-success"></i> 在线</a> <%-- 该位置发起退出请求 换上即可 --%> <a href="sys/loginout" style="padding-left:5px;"><i class="fa fa-sign-out text-danger"></i> 注销</a> </div> </div> </li> <li> <a class="menuItem" href="web/main/sy.jsp"><i class="fa fa-home"></i> <span class="nav-label">首页</span></a> </li> </ul> </div> </nav> <!--左侧导航结束--> <!--右侧部分开始--> <div id="page-wrapper" class="gray-bg dashbard-1"> <div class="row border-bottom"> <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="#" title="收起菜单"> <i class="fa fa-bars"></i> </a> </div> <ul class="nav navbar-top-links navbar-right welcome-message"> <%--<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li> <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>--%> <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li> <%--<li class="dropdown user-menu"> <a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown"> <img src="resources/image/eee.png" class="user-image"> <%– 该位置用el表达式读取登录名 –%> <span class="hidden-xs">海来怡天</span> </a> <ul class="dropdown-menu"> <li class="mt5"> <%– 该位置是个人中心超链接 –%> <a href="" class="menuItem noactive"> <i class="fa fa-user"></i> 个人中心</a> </li> <li> <a onclick="resetPwd()"> <i class="fa fa-key"></i> 修改密码</a> </li> <li> <a onclick="switchSkin()"> <%–<a id="btn" >–%> <i class="fa fa-dashboard"></i> 切换主题 </a> </li> <li class="divider"></li> <li> <%– 该位置是推出登录请求 –%> <a href=""> <i class="fa fa-sign-out"></i> 退出登录</a> </li> </ul> </li>--%> </ul> </nav> </div> <div class="row content-tabs"> <button class="roll-nav roll-left tabLeft"> <i class="fa fa-backward"></i> </button> <nav class="page-tabs menuTabs"> <div class="page-tabs-content"> <a href="javascript:" class="active menuTab" data-id="web/main/sy.jsp">首页</a> </div> </nav> <button class="roll-nav roll-right tabRight"> <i class="fa fa-forward"></i> </button> <a href="javascript:void(0);" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 刷新</a> </div> <a id="ax_close_max" class="ax_close_max" href="#" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a> <div class="row mainContent" id="content-main" > <iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" data-id="web/main/sy.jsp" src="web/main/sy.jsp" frameborder="0" seamless></iframe> </div> </div> <!--右侧部分结束--> </div> <!-- 全局js --> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/js/plugins/metisMenu/jquery.metisMenu.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/js/plugins/slimscroll/jquery.slimscroll.min.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/js/jquery.contextMenu.min.js?v=<%=System.currentTimeMillis()%>"></script> <%--<script src="${pageContext.request.contextPath}/resources/ruoyi/ajax/libs/layui/layui.js?v=<%=System.currentTimeMillis()%>"></script>--%> <%-- 该方法用于将页面加载到本页面 --%> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/ajax/libs/blockUI/jquery.blockUI.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/ajax/libs/layer/layer.min.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/js/ry-ui.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/js/common.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/ruoyi/index.js?v=<%=System.currentTimeMillis()%>"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/resources/ruoyi/ajax/libs/fullscreen/jquery.fullscreen.js?v=<%=System.currentTimeMillis()%>"></script> <script> /*window.history.forward(1); var ctx = "/zhfx"; // 皮肤缓存 var skin = storage.get("skin");*/ // history(表示去掉地址的#)否则地址以"#"形式展示 var mode = "history"; // 历史访问路径缓存 var historyPath = storage.get("historyPath"); // 是否页签与菜单联动 var isLinkage = true; /* * 这个js如果删了 按下F12编辑时 页面会不起作用 * */ $(function() { var lockPath = storage.get('lockPath'); if($.common.equals("history", mode) && window.performance.navigation.type == 1) { var url = storage.get('publicPath'); if ($.common.isNotEmpty(url)) { applyPath(url); } } else if($.common.isNotEmpty(lockPath)) { applyPath(lockPath); storage.remove('lockPath'); } else { var hash = location.hash; if ($.common.isNotEmpty(hash)) { var url = hash.substring(1, hash.length); applyPath(url); } else { if($.common.equals("history", mode)) { storage.set('publicPath', ""); } } } $("[data-toggle='tooltip']").tooltip(); }); </script> </body> </html> 为什么 一个刷新 一个跳转 这俩 点刷新是reload 再点跳转还是reload 必须第二下才是navigate 但是这样点了navigate之后 再点刷新还是navigate 必须再点刷新才是reload 这可不能这样
11-12
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值