程序员老王 发布的文章

mouse event

function createMouseEvent(eventType, rect) {
    return new MouseEvent(eventType, {
        bubbles: true,
        cancelable: true,
        view: window,
        clientX: rect.left + rect.width / 2,  // 元素的水平中心
        clientY: rect.top + rect.height / 2,  // 元素的垂直中心
        screenX: window.screenX + rect.left + rect.width / 2,  // 相对于屏幕的位置
        screenY: window.screenY + rect.top + rect.height / 2,  // 相对于屏幕的位置
        button: 0  // 左键
    });
}

const rect = ele.getBoundingClientRect();
ele.dispatchEvent(createMouseEvent('mousedown', rect));
ele.dispatchEvent(createMouseEvent('mouseup', rect));
ele.dispatchEvent(createMouseEvent('click', rect));  // 模拟 click 事件

point event

function createPointerEvent(eventType, rect) {
    return new PointerEvent(eventType, {
        bubbles: true,
        cancelable: true,
        view: window,
        clientX: rect.left + rect.width / 2,
        clientY: rect.top + rect.height / 2,
        screenX: window.screenX + rect.left + rect.width / 2,
        screenY: window.screenY + rect.top + rect.height / 2,
        button: 0,
        pointerId: 1,  // 指针 ID,一般使用 1
        width: 1,      // 指针宽度
        height: 1,     // 指针高度
        pressure: 0.5  // 模拟的触控压力,0-1 范围
    });
}

let selects = document.getElementsByTagName("select");
  if (selects.length !== selectAnswer.length) {
    layer.msg("页面上的题可能已经发生了变化", { icon: 0 });
    return;
  }
  let lastScope = NaN;
  let idx = -1;
  // 获取Angular作用域
  selectAnswer.forEach((answer, index) => {
    let scope = angular.element(selects[index]).scope();
    // console.log(scope.subject.sub_subjects);
    // console.log(lastScope === scope, lastScope);
    if (idx === -1) {
      idx = 0;
    } else if (lastScope === scope) {
      idx += 1;
    } else {
      idx = 0;
    }
    lastScope = scope;

    //angular.element(document.getElementsByTagName("select")[0]).scope().subject.sub_subjects;
    scope.$apply(() => {
      console.log(scope.subject.sub_subjects[idx]);
      let old = scope.subject.sub_subjects[idx].answeredOption;
      scope.subject.sub_subjects[idx].answeredOption = answer;
      scope.onChangeSubmission(scope.subject.sub_subjects[idx]);

      console.log(scope.subject.sub_subjects[idx]);
      console.log(
        `old: ${old},new:${answer}, now:${scope.subject.sub_subjects[idx].answeredOption}`,
      );
    });
    $(selects[index]).multiselect("refresh");
    angular.element(selects[index]).triggerHandler("change");
  });

# 使用scratch作为基础镜像
FROM scratch
WORKDIR /app

# 复制本地编译好的应用程序到容器中
# GOOS=linux GOARCH=amd64 CGO_ENABLED=0  go build -o ./bin/main main.go
COPY ./bin/main /app/main

# 复制配置文件和其他必要的文件到容器中
#COPY ./config.toml /app/config.toml

# 复制时区数据文件到容器中 需要把时区文件先复制到项目下
COPY ./zoneinfo/Asia/Shanghai /etc/localtime

# 设置时区环境变量
ENV TZ=Asia/Shanghai

# 运行应用程序
ENTRYPOINT ["/app/main", "-conf", "/app/config.toml"]