Joyber 发布的文章

objname是HTML代码内容的元素ID

function runcode(objname) {
  var winname = window.open('',"_blank",'');
  var obj = document.getElementById(objname);
  winname.document.open('text/html','replace');
  winname.opener = null;
  winname.document.write(obj.value);
  winname.document.close();
}

        <div class='fixed-footer-btns show' id='fixed-footer-btns' style='line-height: 30px;'>
            <div class='holder-body' style="display: flex; justify-content: center; flex-wrap: wrap; background-color: rgba(220,220,220,.8); padding: 4px 10px;">
                <div style='padding-right: 15px;'>
                    共{{pages.count}}条,第{{pages.page}}/{{pages.pageCount}}页
                </div>
                <div>
                    <ul class='yiiPager'>
                        <li class='first' v-if='pages.pageCount>1'><a href='javascript:;' class='page-jumper' @click='gotoPage(1)'>首页</a></li>
                        <li class='previous' v-if='pages.page>1'><a href='javascript:;' class='page-jumper' @click='gotoPage(pages.page - 1)'>上一页</a></li>
                        <li class='page' :class='item.class' v-for='item in pageList'><a href='javascript:;' class='page-jumper' @click='gotoPage(item.page)'>{{item.page}}</a></li>
                        <li class='next' v-if='pages.page < pages.pageCount'><a href='javascript:;' class='page-jumper' @click='gotoPage(pages.page + 1)'>下一页</a></li>
                        <li class='last' v-if='pages.pageCount>1'><a href='javascript:;' class='page-jumper' @click='gotoPage(pages.pageCount)'>末页</a></li>
                    </ul>
                </div>
                <div class='input-group input-group-sm pageGoto margin-left-sm'>
                    <input ref='pagenum' @change='gotoPage()' type='text' class='form-control input-sm text-center' style="width: 60px;">
                    <div class='input-group-btn '>
                        <div class='btn btn-sm btn-default' @click='gotoPage()'>跳转</div>
                    </div>
                </div><!-- /input-group -->
                <div class='input-group pageGoto margin-left-sm'>
                    <select ref='pageSize' v-model="pages.pageSize" @change='gotoPage(1)' class='form-control input-sm text-center' style="width: 100px;">
                        <option value="10">10/页</option>
                        <option value="30">30/页</option>
                        <option value="50">50/页</option>
                        <option value="100">100/页</option>
                        <option value="200">200/页</option>
                        <option value="300">300/页</option>
                        <option value="500">500/页</option>
                        <option value="1000">1000/页</option>
                    </select>
                </div><!-- /input-group -->
            </div>
        </div>
new Vue({

...
            computed:{

                pageList(){
                    const {pages} = this
                    var res = []
                    var pageViewCount = 5; //显示当前分页前后的页码数
                    for (var i = pages.page - pageViewCount; i <= pages.page + pageViewCount; i++) {
                        if (i < 1 || i > pages.pageCount) {
                            continue;
                        }
                        res.push({
                            class: i == pages.page ? 'selected' : '',
                            page: i,
                        })
                    }
                    return res
                }
}
...

})

Element.getBoundingClientRect() 方法返回一个 DOMRect 对象,其提供了元素的大小及其相对于视口的位置。
参考文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect
参数:无。
返回值是一个 DOMRect 对象,是包含整个元素的最小矩形(包括 padding 和 border-width)。该对象使用 left、top、right、bottom、x、y、width 和 height 这几个以像素为单位的只读属性描述整个矩形的位置和大小。除了 width 和 height 以外的属性是相对于视图窗口的左上角来计算的。

element.getBoundingClientRect().width
element.getBoundingClientRect().height

通过向通义灵码扩展提问,AI自动生成的方式,由最初的“生成一个带界面的时钟程序”,再“添加一个倒计时功能”、“添加音乐播放”、“添加停止播放按钮”一步一步生成了最终的这个程序,现在的AI已经很牛B了

import time
import pygame
from tkinter import Tk, Label, Button, Entry, messagebox

# 一个倒计时计时器程序
# 这个程序使用阿里云【灵码】插件,一步一步优化由AI生成的
# VS code IDE的扩展中安装TONGYI lingma
class TimerClock:
    def __init__(self, master):
        self.master = master
        master.title("Timer Clock")

        pygame.mixer.init()  # 初始化pygame.mixer

        # 创建标签以显示时间
        self.clock_label = Label(master, font=("Arial", 80), bg="black", fg="white")
        self.clock_label.pack(fill="both", expand=1)

        # 创建输入框以输入定时器时长
        self.timer_entry = Entry(master)
        self.timer_entry.pack()

        # 创建按钮以设置/停止定时器
        self.timer_button = Button(master, text="Start Timer", command=self.toggle_timer)
        self.timer_button.pack()

        # 创建按钮以停止音乐
        self.stop_music_button = Button(master, text="Stop Music", command=self.stop_music)
        self.stop_music_button.pack()

        # 定时器相关变量
        self.timer_duration = None
        self.timer_start_time = None
        self.timer_running = False
        self.countdown_id = None  # 存储倒计时ID

        # 初始化并开始更新时间
        self.update_time()

    def toggle_timer(self):
        if not self.timer_running:
            try:
                self.timer_duration = int(self.timer_entry.get())
                if self.timer_duration is not None:
                    self.timer_start_time = time.time()
                    self.countdown_id = self.master.after(0, self.countdown)
                    self.timer_button.config(text="Stop Timer")
                    self.timer_running = True
            except ValueError:
                messagebox.showerror("Error", "Please enter a valid integer.")
        else:
            self.timer_running = False
            self.timer_button.config(text="Start Timer")
            self.master.after_cancel(self.countdown_id)
            self.countdown_id = None
            pygame.mixer.music.stop()

    def countdown(self):
        remaining_time = max(0, self.timer_duration - int(time.time() - self.timer_start_time))
        self.timer_button.config(text=f"Countdown: {remaining_time} sec")
        if remaining_time > 0:
            self.countdown_id = self.master.after(1000, self.countdown)
        else:
            self.timer_alert()

    def timer_alert(self):
        pygame.mixer.music.load('alarm.mp3')
        pygame.mixer.music.play(-1)  # 循环播放音乐
        self.timer_running = False
        self.timer_button.config(text="Start Timer")

    def stop_music(self):
        pygame.mixer.music.stop()
        self.timer_button.config(state='normal')

    def update_time(self):
        current_time = time.strftime("%H:%M:%S")
        self.clock_label.config(text=current_time)
        self.clock_label.after(1000, self.update_time)

if __name__ == "__main__":
    root = Tk()
    my_clock = TimerClock(root)
    root.mainloop()

www/server/panel/data/system.db
这个是面板的监控信息,删除的话以前的数据就不在了,如果您觉得没必要的话可以删除,删除后命令行执行bt 1命令重启下面板。
或者在控制面板,左侧菜单【监控】页面,点击【清理数据】,没必要的话关闭监控功能或者定期清理数据