Greasy Fork

Greasy Fork is available in English.

iPhone学习通助手

学习通考试考不过?不存在的!

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         iPhone学习通助手
// @namespace    [email protected]
// @version      1.0
// @description  学习通考试考不过?不存在的!
// @author       iKaiKail
// @match        *://*/*
// @grant        none
// @icon         https://apps.chaoxing.com/res/images/apk/logo.png
// ==/UserScript==


(function() {
    'use strict';

    // 创建图标元素
    const icon = document.createElement('img');
    icon.src = 'https://apps.chaoxing.com/res/images/apk/logo.png';
    icon.style.position = 'fixed';
    icon.style.width = '50px';
    icon.style.height = '50px';
    icon.style.zIndex = '9999';
    icon.style.cursor = 'move';
    icon.style.right = '20px';
    icon.style.bottom = '20px';
    icon.style.borderRadius = '50%';
    icon.style.boxShadow = '0 2px 10px rgba(0,0,0,0.3)';
    icon.title = '点击访问快捷指令';

    // 添加图标到页面
    document.body.appendChild(icon);

    // 拖动功能变量
    let isDragging = false;
    let currentX, currentY, initialX, initialY;
    let xOffset = 0, yOffset = 0;

    // 鼠标按下事件 - 开始拖动
    icon.addEventListener('mousedown', dragStart);

    // 鼠标移动事件
    document.addEventListener('mousemove', drag);

    // 鼠标松开事件
    document.addEventListener('mouseup', dragEnd);

    // 点击事件 - 跳转链接
    icon.addEventListener('click', function(e) {
        // 防止拖动时触发点击
        if (!isDragging) {
            window.open('https://www.icloud.com/shortcuts/f0d0a97e152142028bf037cb7be786d9', '_blank');
        }
    });

    function dragStart(e) {
        initialX = e.clientX - xOffset;
        initialY = e.clientY - yOffset;

        if (e.target === icon) {
            isDragging = true;
        }
    }

    function drag(e) {
        if (isDragging) {
            e.preventDefault();
            currentX = e.clientX - initialX;
            currentY = e.clientY - initialY;

            xOffset = currentX;
            yOffset = currentY;

            setTranslate(currentX, currentY, icon);
        }
    }

    function setTranslate(xPos, yPos, el) {
        el.style.transform = `translate3d(${xPos}px, ${yPos}px, 0)`;
    }

    function dragEnd() {
        initialX = currentX;
        initialY = currentY;
        isDragging = false;
    }
})();