自动发帖软件

标题: AIWROK软件H5脚本执行与进度显示 [打印本页]

作者: 发帖软件    时间: 2 小时前
标题: AIWROK软件H5脚本执行与进度显示


AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 群发软件发帖工具

AIWROK软件H5脚本执行与进度显示 群发软件发帖工具



  1. //🍎交流QQ群711841924群一,苹果内测群,528816639
  2. <!DOCTYPE html>
  3. <html lang="zh-CN">
  4. <head>
  5.     <meta charset="UTF-8">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  7.     <title>AIWROK 任务执行与进度显示</title>
  8.     <style>
  9.         /* 基础样式重置 */
  10.         * {
  11.             margin: 0;
  12.             padding: 0;
  13.             box-sizing: border-box;
  14.             -webkit-tap-highlight-color: transparent;
  15.         }

  16.         body {
  17.             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  18.             background-color: #f5f5f5;
  19.             color: #333;
  20.             line-height: 1.6;
  21.             overflow-x: hidden;
  22.         }

  23.         /* 手机容器 */
  24.         .mobile-container {
  25.             max-width: 414px;
  26.             margin: 0 auto;
  27.             background-color: white;
  28.             min-height: 100vh;
  29.             position: relative;
  30.             overflow: hidden;
  31.             box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
  32.         }

  33.         /* 页面标题 */
  34.         .page-title {
  35.             padding: 20px;
  36.             background-color: #1976d2;
  37.             color: white;
  38.             font-size: 18px;
  39.             font-weight: 600;
  40.             text-align: center;
  41.         }

  42.         /* 主要内容区域 */
  43.         .content {
  44.             padding: 0;
  45.             padding-bottom: 100px;
  46.             min-height: 200px;
  47.         }

  48.         /* 进度条显示区域 */
  49.         .progress-container {
  50.             display: none;
  51.             margin: 10px;
  52.             padding: 15px;
  53.             background-color: #f5f5f5;
  54.             border-radius: 8px;
  55.             border: 1px solid #e0e0e0;
  56.         }

  57.         .progress-container.active {
  58.             display: block;
  59.         }

  60.         /* 整体进度条 */
  61.         .total-progress {
  62.             margin-bottom: 15px;
  63.         }

  64.         .progress-header {
  65.             display: flex;
  66.             justify-content: space-between;
  67.             margin-bottom: 5px;
  68.             font-size: 14px;
  69.             color: #666;
  70.         }

  71.         .progress-bar-container {
  72.             height: 16px;
  73.             background-color: #e0e0e0;
  74.             border-radius: 8px;
  75.             overflow: hidden;
  76.         }

  77.         .progress-bar {
  78.             height: 100%;
  79.             width: 0%;
  80.             transition: width 0.3s ease;
  81.             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  82.         }

  83.         .total-progress-bar {
  84.             background-color: #4caf50;
  85.             background-image: linear-gradient(to right, #4caf50, #66bb6a);
  86.         }

  87.         /* 当前任务进度条 */
  88.         .task-progress {
  89.             margin-bottom: 20px;
  90.         }

  91.         .task-progress-bar {
  92.             background-color: #2196f3;
  93.             background-image: linear-gradient(to right, #2196f3, #42a5f5);
  94.         }

  95.         /* 任务列表 */
  96.         .task-list {
  97.             margin: 0;
  98.             background-color: white;
  99.             border-radius: 0;
  100.             overflow: hidden;
  101.             min-height: 100px;
  102.         }

  103.         .task-item {
  104.             padding: 16px 20px;
  105.             border-bottom: 1px solid #e0e0e0;
  106.             cursor: pointer;
  107.             transition: background-color 0.2s ease;
  108.             position: relative;
  109.             display: flex;
  110.             flex-direction: column;
  111.             min-height: 60px;
  112.         }

  113.         .task-item:last-child {
  114.             border-bottom: none;
  115.         }

  116.         .task-item:hover {
  117.             background-color: #f5f5f5;
  118.         }

  119.         .task-item.active {
  120.             background-color: #e3f2fd;
  121.         }

  122.         .task-name {
  123.             font-size: 18px;
  124.             font-weight: 600;
  125.             margin-bottom: 4px;
  126.             color: #333;
  127.         }

  128.         .task-status {
  129.             font-size: 14px;
  130.             color: #999;
  131.         }

  132.         /* 结果显示区域 */
  133.         .result-container {
  134.             margin: 10px;
  135.             padding: 15px;
  136.             background-color: #f5f5f5;
  137.             border-radius: 8px;
  138.             border: 1px solid #e0e0e0;
  139.             max-height: 150px;
  140.             overflow-y: auto;
  141.         }

  142.         .result-title {
  143.             font-weight: bold;
  144.             margin-bottom: 10px;
  145.             color: #333;
  146.             font-size: 16px;
  147.         }

  148.         .result-content {
  149.             font-size: 14px;
  150.             color: #666;
  151.             white-space: pre-wrap;
  152.             line-height: 1.5;
  153.         }

  154.         /* 控制按钮 */
  155.         .control-buttons {
  156.             position: fixed;
  157.             bottom: 0;
  158.             left: 0;
  159.             right: 0;
  160.             max-width: 414px;
  161.             margin: 0 auto;
  162.             padding: 15px 10px;
  163.             background-color: white;
  164.             border-top: 1px solid #e0e0e0;
  165.             box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
  166.         }

  167.         .btn {
  168.             width: 100%;
  169.             height: 50px;
  170.             border: none;
  171.             border-radius: 8px;
  172.             font-size: 16px;
  173.             font-weight: 600;
  174.             cursor: pointer;
  175.             margin-bottom: 10px;
  176.             transition: all 0.3s ease;
  177.             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  178.         }

  179.         .btn:last-child {
  180.             margin-bottom: 0;
  181.         }

  182.         .btn-primary {
  183.             background-color: #2196f3;
  184.             color: white;
  185.             background-image: linear-gradient(to bottom, #2196f3, #1976d2);
  186.         }

  187.         .btn-primary:hover {
  188.             background-color: #1976d2;
  189.             background-image: linear-gradient(to bottom, #1976d2, #1565c0);
  190.         }

  191.         .btn-primary:active {
  192.             background-color: #1565c0;
  193.             background-image: linear-gradient(to bottom, #1565c0, #0d47a1);
  194.             transform: scale(0.98);
  195.         }

  196.         .btn-primary:disabled {
  197.             background-color: #90caf9;
  198.             background-image: none;
  199.             cursor: not-allowed;
  200.             transform: none;
  201.         }

  202.         .btn-secondary {
  203.             background-color: #f5f5f5;
  204.             color: #333;
  205.         }

  206.         .btn-secondary:hover {
  207.             background-color: #e0e0e0;
  208.         }

  209.         .btn-secondary:active {
  210.             background-color: #bdbdbd;
  211.             transform: scale(0.98);
  212.         }

  213.         /* 加载动画 */
  214.         .loading {
  215.             position: relative;
  216.             pointer-events: none;
  217.         }

  218.         @keyframes spin {
  219.             from { transform: rotate(0deg); }
  220.             to { transform: rotate(360deg); }
  221.         }

  222.         .loading::after {
  223.             content: '';
  224.             position: absolute;
  225.             top: 50%;
  226.             left: 50%;
  227.             width: 24px;
  228.             height: 24px;
  229.             margin-top: -12px;
  230.             margin-left: -12px;
  231.             border: 2px solid rgba(255, 255, 255, 0.3);
  232.             border-top-color: white;
  233.             border-radius: 50%;
  234.             animation: spin 0.8s linear infinite;
  235.         }
  236.     </style>
  237. </head>
  238. <body>
  239.     <div class="mobile-container">
  240.         <!-- 页面标题 -->
  241.         <div class="page-title">AIWROK 任务执行系统</div>

  242.         <!-- 进度条显示区域 -->
  243.         <div id="progressContainer" class="progress-container">
  244.             <!-- 整体进度条 -->
  245.             <div class="total-progress">
  246.                 <div class="progress-header">
  247.                     <span id="totalProgressLabel">总进度: 0%</span>
  248.                     <span id="currentTaskLabel">准备开始</span>
  249.                 </div>
  250.                 <div class="progress-bar-container">
  251.                     <div id="totalProgressBar" class="progress-bar total-progress-bar"></div>
  252.                 </div>
  253.             </div>

  254.             <!-- 当前任务进度条 -->
  255.             <div class="task-progress">
  256.                 <div class="progress-header">
  257.                     <span id="taskProgressLabel">当前任务: 0%</span>
  258.                     <span id="taskStatusLabel">准备开始</span>
  259.                 </div>
  260.                 <div class="progress-bar-container">
  261.                     <div id="taskProgressBar" class="progress-bar task-progress-bar"></div>
  262.                 </div>
  263.             </div>
  264.         </div>

  265.         <!-- 任务列表 -->
  266.         <div class="task-list">
  267.             <div class="task-item" data-task="抖音极速" onclick="selectTask(this)">
  268.                 <div class="task-name">抖音极速</div>
  269.                 <div class="task-status" id="status_抖音极速">未执行</div>
  270.             </div>
  271.             <div class="task-item" data-task="快手极速" onclick="selectTask(this)">
  272.                 <div class="task-name">快手极速</div>
  273.                 <div class="task-status" id="status_快手极速">未执行</div>
  274.             </div>
  275.             <div class="task-item" data-task="汽水音乐" onclick="selectTask(this)">
  276.                 <div class="task-name">汽水音乐</div>
  277.                 <div class="task-status" id="status_汽水音乐">未执行</div>
  278.             </div>
  279.             <div class="task-item" data-task="番茄畅听音乐" onclick="selectTask(this)">
  280.                 <div class="task-name">番茄畅听音乐</div>
  281.                 <div class="task-status" id="status_番茄畅听音乐">未执行</div>
  282.             </div>
  283.             <div class="task-item" data-task="西瓜视频" onclick="selectTask(this)">
  284.                 <div class="task-name">西瓜视频</div>
  285.                 <div class="task-status" id="status_西瓜视频">未执行</div>
  286.             </div>
  287.             <div class="task-item" data-task="番茄畅听" onclick="selectTask(this)">
  288.                 <div class="task-name">番茄畅听</div>
  289.                 <div class="task-status" id="status_番茄畅听">未执行</div>
  290.             </div>
  291.             <div class="task-item" data-task="番茄小说" onclick="selectTask(this)">
  292.                 <div class="task-name">番茄小说</div>
  293.                 <div class="task-status" id="status_番茄小说">未执行</div>
  294.             </div>
  295.             <div class="task-item" data-task="悟空浏览器" onclick="selectTask(this)">
  296.                 <div class="task-name">悟空浏览器</div>
  297.                 <div class="task-status" id="status_悟空浏览器">未执行</div>
  298.             </div>
  299.             <div class="task-item" data-task="红果短剧" onclick="selectTask(this)">
  300.                 <div class="task-name">红果短剧</div>
  301.                 <div class="task-status" id="status_红果短剧">未执行</div>
  302.             </div>
  303.             <div class="task-item" data-task="头条广告单版" onclick="selectTask(this)">
  304.                 <div class="task-name">今日头条</div>
  305.                 <div class="task-status" id="status_头条广告单版">未执行</div>
  306.             </div>
  307.             <div class="task-item" data-task="头条极速广告单版" onclick="selectTask(this)">
  308.                 <div class="task-name">今日头条极速版</div>
  309.                 <div class="task-status" id="status_头条极速广告单版">未执行</div>
  310.             </div>
  311.             <div class="task-item" data-task="喜番短剧" onclick="selectTask(this)">
  312.                 <div class="task-name">喜番短剧</div>
  313.                 <div class="task-status" id="status_喜番短剧">未执行</div>
  314.             </div>
  315.             <div class="task-item" data-task="快手正式" onclick="selectTask(this)">
  316.                 <div class="task-name">快手正式版</div>
  317.                 <div class="task-status" id="status_快手正式">未执行</div>
  318.             </div>
  319.             <div class="task-item" data-task="苹果删除APP" onclick="selectTask(this)">
  320.                 <div class="task-name">卸载APP</div>
  321.                 <div class="task-status" id="status_苹果删除APP">未执行</div>
  322.             </div>
  323.             <div class="task-item" data-task="测试函数2" onclick="selectTask(this)">
  324.                 <div class="task-name">测试2</div>
  325.                 <div class="task-status" id="status_测试函数2">未执行</div>
  326.             </div>
  327.         </div>

  328.         <!-- 结果显示区域 -->
  329.         <div class="result-container">
  330.             <div class="result-title">执行结果</div>
  331.             <div class="result-content" id="resultContent">准备就绪,等待执行任务...</div>
  332.         </div>

  333.         <!-- 控制按钮 -->
  334.         <div class="control-buttons">
  335.             <button class="btn btn-primary" id="runButton" onclick="runSelectedTask()">开始执行</button>
  336.             <button class="btn btn-secondary" onclick="resetTasks()">重置任务</button>
  337.         </div>
  338.     </div>

  339.     <script>
  340.         // 全局变量
  341.         var selectedTask = null;
  342.         var isTaskRunning = false;
  343.         var currentProgress = 0;

  344.         // 显示结果的函数
  345.         function showResult(message) {
  346.             var resultContent = document.getElementById('resultContent');
  347.             if (resultContent) {
  348.                 var timestamp = new Date().toLocaleTimeString();
  349.                 resultContent.innerHTML += '[' + timestamp + '] ' + message + '\n';
  350.                 resultContent.scrollTop = resultContent.scrollHeight;
  351.             }
  352.         }

  353.         // 进度条控制函数
  354.         function showProgress() {
  355.             var progressContainer = document.getElementById('progressContainer');
  356.             if (progressContainer) {
  357.                 progressContainer.classList.add('active');
  358.             }
  359.         }

  360.         function hideProgress() {
  361.             var progressContainer = document.getElementById('progressContainer');
  362.             if (progressContainer) {
  363.                 progressContainer.classList.remove('active');
  364.             }
  365.         }

  366.         function updateTotalProgress(percentage, currentTask) {
  367.             var totalProgressLabel = document.getElementById('totalProgressLabel');
  368.             var totalProgressBar = document.getElementById('totalProgressBar');
  369.             var currentTaskLabel = document.getElementById('currentTaskLabel');

  370.             if (totalProgressLabel) {
  371.                 totalProgressLabel.innerText = '总进度: ' + Math.round(percentage) + '%';
  372.             }

  373.             if (totalProgressBar) {
  374.                 totalProgressBar.style.width = percentage + '%';
  375.             }

  376.             if (currentTaskLabel && currentTask) {
  377.                 currentTaskLabel.innerText = currentTask;
  378.             }
  379.         }

  380.         function updateTaskProgress(percentage, status) {
  381.             var taskProgressLabel = document.getElementById('taskProgressLabel');
  382.             var taskProgressBar = document.getElementById('taskProgressBar');
  383.             var taskStatusLabel = document.getElementById('taskStatusLabel');

  384.             if (taskProgressLabel) {
  385.                 taskProgressLabel.innerText = '当前任务: ' + Math.round(percentage) + '%';
  386.             }

  387.             if (taskProgressBar) {
  388.                 taskProgressBar.style.width = percentage + '%';
  389.             }

  390.             if (taskStatusLabel && status) {
  391.                 taskStatusLabel.innerText = status;
  392.             }
  393.         }

  394.         // 更新任务状态
  395.         function updateTaskStatus(taskName, status) {
  396.             var statusElement = document.getElementById('status_' + taskName);
  397.             if (statusElement) {
  398.                 statusElement.innerText = status;
  399.             }
  400.         }

  401.         // 任务选择函数
  402.         function selectTask(taskElement) {
  403.             if (isTaskRunning) {
  404.                 showResult('当前有任务正在执行,请等待完成后再选择');
  405.                 return;
  406.             }

  407.             // 移除之前的选中状态
  408.             var allTasks = document.querySelectorAll('.task-item');
  409.             allTasks.forEach(function(task) {
  410.                 task.classList.remove('active');
  411.             });

  412.             // 设置新的选中状态
  413.             taskElement.classList.add('active');
  414.             selectedTask = taskElement.getAttribute('data-task');

  415.             showResult('已选择任务: ' + selectedTask);
  416.         }

  417.         // 模拟任务执行进度
  418.         function simulateTaskProgress(taskName, duration, callback) {
  419.             var progress = 0;
  420.             var interval = 100;
  421.             var steps = duration / interval;
  422.             var stepProgress = 100 / steps;

  423.             var progressInterval = setInterval(function() {
  424.                 progress += stepProgress;
  425.                 if (progress >= 100) {
  426.                     progress = 100;
  427.                     clearInterval(progressInterval);
  428.                     callback();
  429.                 }
  430.                 updateTaskProgress(progress, '执行中...');
  431.             }, interval);
  432.         }

  433.         // 执行选中的任务
  434.         function runSelectedTask() {
  435.             if (!selectedTask) {
  436.                 showResult('请先选择要执行的任务');
  437.                 return;
  438.             }

  439.             if (isTaskRunning) {
  440.                 showResult('当前有任务正在执行,请等待完成');
  441.                 return;
  442.             }

  443.             isTaskRunning = true;
  444.             var runButton = document.getElementById('runButton');
  445.             runButton.disabled = true;
  446.             runButton.classList.add('loading');
  447.             runButton.innerText = '执行中';

  448.             showProgress();
  449.             updateTotalProgress(0, selectedTask);
  450.             updateTaskProgress(0, '准备执行');
  451.             updateTaskStatus(selectedTask, '执行中');

  452.             showResult('开始执行任务: ' + selectedTask);

  453.             // 模拟任务执行过程
  454.             simulateTaskProgress(selectedTask, 3000, function() {
  455.                 // 任务执行完成
  456.                 updateTaskProgress(100, '执行完成');
  457.                 updateTotalProgress(100, selectedTask);
  458.                 updateTaskStatus(selectedTask, '已完成');

  459.                 try {
  460.                     // 尝试调用主脚本中的任务函数
  461.                     if (typeof window[selectedTask] === 'function') {
  462.                         window[selectedTask]();
  463.                     } else {
  464.                         // 如果没有对应的函数,直接执行APP代码
  465.                         window.at.runJs('function() { ' + selectedTask + '(); }');
  466.                     }
  467.                 } catch (e) {
  468.                     showResult('执行任务失败: ' + e.message);
  469.                 }

  470.                 showResult('任务执行完成: ' + selectedTask);

  471.                 // 恢复按钮状态
  472.                 setTimeout(function() {
  473.                     runButton.disabled = false;
  474.                     runButton.classList.remove('loading');
  475.                     runButton.innerText = '开始执行';
  476.                     isTaskRunning = false;
  477.                     hideProgress();
  478.                 }, 1500);
  479.             });
  480.         }

  481.         // 重置任务
  482.         function resetTasks() {
  483.             if (isTaskRunning) {
  484.                 showResult('当前有任务正在执行,无法重置');
  485.                 return;
  486.             }

  487.             // 移除所有选中状态
  488.             var allTasks = document.querySelectorAll('.task-item');
  489.             allTasks.forEach(function(task) {
  490.                 task.classList.remove('active');
  491.                 var taskName = task.getAttribute('data-task');
  492.                 updateTaskStatus(taskName, '未执行');
  493.             });

  494.             selectedTask = null;
  495.             hideProgress();
  496.             document.getElementById('resultContent').innerText = '准备就绪,等待执行任务...';
  497.             showResult('任务已重置');
  498.         }

  499.         // 初始化AIWROK交互对象
  500.         window.at = window.at || {};

  501.         // 模拟AIWROK原生方法
  502.         if (typeof window.at.runJs === 'undefined') {
  503.             window.at.runJs = function(jsCode) {
  504.                 showResult('执行APP代码: ' + jsCode.substring(0, 50) + (jsCode.length > 50 ? '...' : ''));
  505.                 return '代码执行成功';
  506.             };
  507.         }

  508.         if (typeof window.at.callFunction === 'undefined') {
  509.             window.at.callFunction = function(functionName, params, callback) {
  510.                 showResult('调用原生函数: ' + functionName + ',参数: ' + JSON.stringify(params));
  511.                 if (typeof callback === 'function') {
  512.                     callback(JSON.stringify({result: '成功', functionName: functionName}));
  513.                 }
  514.             };
  515.         }

  516.         // 页面加载完成初始化
  517.         window.onload = function() {
  518.             try {
  519.                 showResult('AIWROK任务执行系统加载完成');
  520.                 showResult('请选择一个任务,然后点击开始执行按钮');

  521.                 // 尝试加载主脚本.js
  522.                 try {
  523.                     var scriptTag = document.createElement('script');
  524.                     scriptTag.src = '主脚本.js';
  525.                     scriptTag.onload = function() {
  526.                         showResult('主脚本加载完成,可以执行任务');
  527.                     };
  528.                     scriptTag.onerror = function() {
  529.                         showResult('主脚本加载失败,将使用模拟执行');
  530.                     };
  531.                     document.body.appendChild(scriptTag);
  532.                 } catch (e) {
  533.                     showResult('加载主脚本时出错: ' + e.message);
  534.                 }
  535.             } catch (e) {
  536.                 console.error('页面初始化错误:', e);
  537.                 if (typeof showResult === 'function') {
  538.                     showResult('页面初始化时出错: ' + e.message);
  539.                 }
  540.             }
  541.         };
  542.     </script>
  543. </body>
  544. </html>
复制代码







欢迎光临 自动发帖软件 (http://www.fatiegongju.com/) Powered by Discuz! X3.2