注册 登录
发贴工具
查看: 5|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] AIWROK软件H5单选脚本运行示例

[复制链接]

2453

主题

2501

帖子

1万

积分

积分
14922
跳转到指定楼层
楼主
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 H5单选脚本运行示例</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.             -webkit-font-smoothing: antialiased;
  23.             -moz-osx-font-smoothing: grayscale;
  24.         }

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

  35.         /* 顶部导航栏 */
  36.         .top-nav {
  37.             display: flex;
  38.             background-color: white;
  39.             border-bottom: 1px solid #f0f0f0;
  40.             padding: 12px 0;
  41.         }

  42.         .top-nav-item {
  43.             flex: 1;
  44.             text-align: center;
  45.             font-size: 16px;
  46.             color: #333;
  47.             text-decoration: none;
  48.             padding: 8px 0;
  49.         }

  50.         .top-nav-item.active {
  51.             color: #2196f3;
  52.             font-weight: 600;
  53.             border-bottom: 2px solid #2196f3;
  54.         }

  55.         /* 主要内容区域 */
  56.         .content {
  57.             padding: 0;
  58.             padding-bottom: 80px;
  59.         }

  60.         /* 页面容器样式 */
  61.         .page {
  62.             display: none;
  63.         }

  64.         .page.active {
  65.             display: block;
  66.         }

  67.         /* 返回按钮 */
  68.         .back-button {
  69.             width: 100%;
  70.             height: 56px;
  71.             background-color: #ff0000;
  72.             color: white;
  73.             border: none;
  74.             border-radius: 0;
  75.             font-size: 18px;
  76.             font-weight: 600;
  77.             cursor: pointer;
  78.             margin-bottom: 0;
  79.             transition: all 0.3s ease;
  80.             transform: scale(1);
  81.         }

  82.         .back-button:active {
  83.             background-color: #cc0000;
  84.             transform: scale(0.95);
  85.         }

  86.         /* 选择列表 */
  87.         .select-list {
  88.             margin-bottom: 0;
  89.             padding: 0 16px;
  90.         }

  91.         /* 下拉选择框样式 */
  92.         .select-item {
  93.             margin-bottom: 12px;
  94.             padding: 12px 16px;
  95.             border-bottom: 1px solid #f0f0f0;
  96.         }

  97.         .select-item:last-child {
  98.             border-bottom: none;
  99.         }

  100.         .select-item select {
  101.             width: 100%;
  102.             height: 40px;
  103.             padding: 8px 12px;
  104.             font-size: 16px;
  105.             color: #333;
  106.             border: 1px solid #ddd;
  107.             border-radius: 4px;
  108.             background-color: #fff;
  109.             cursor: pointer;
  110.             -webkit-appearance: none;
  111.             -moz-appearance: none;
  112.             appearance: none;
  113.             background-image: url('data:image/svg+xml;charset=utf8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="%23666" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpolyline points="6 9 12 15 18 9"%3E%3C/polyline%3E%3C/svg%3E');
  114.             background-repeat: no-repeat;
  115.             background-position: right 12px center;
  116.             background-size: 14px;
  117.         }

  118.         .select-item select:focus {
  119.             outline: none;
  120.             border-color: #ff0000;
  121.             box-shadow: 0 0 0 2px rgba(255, 0, 0, 0.2);
  122.         }

  123.         /* 兼容旧的复选框样式 */
  124.         .checkbox-list {
  125.             margin-bottom: 0;
  126.             padding-left: 50px;
  127.         }

  128.         .checkbox-item {
  129.             display: flex;
  130.             align-items: center;
  131.             padding: 12px 16px;
  132.             border-bottom: 1px solid #f0f0f0;
  133.         }

  134.         .checkbox-item:last-child {
  135.             border-bottom: none;
  136.         }

  137.         .checkbox-item input[type="checkbox"] {
  138.             width: 20px;
  139.             height: 20px;
  140.             margin-right: 12px;
  141.             accent-color: #ff0000;
  142.             -webkit-appearance: none;
  143.             -moz-appearance: none;
  144.             appearance: none;
  145.             border: 1px solid #000;
  146.             border-radius: 2px;
  147.             background-color: #fff;
  148.             cursor: pointer;
  149.             position: relative;
  150.         }

  151.         .checkbox-item input[type="checkbox"]:checked {
  152.             background-color: #fff;
  153.             border-color: #000;
  154.         }

  155.         .checkbox-item input[type="checkbox"]:checked::after {
  156.             content: "✓";
  157.             position: absolute;
  158.             top: 50%;
  159.             left: 50%;
  160.             transform: translate(-50%, -50%);
  161.             color: #ff0000;
  162.             font-size: 14px;
  163.             font-weight: bold;
  164.         }

  165.         .checkbox-item label {
  166.             flex: 1;
  167.             font-size: 16px;
  168.             color: #333;
  169.             cursor: pointer;
  170.         }
  171.         
  172.         /* 单选按钮组样式 */
  173.         .radio-list {
  174.             margin-bottom: 0;
  175.             padding: 0;
  176.         }

  177.         .radio-item {
  178.             display: flex;
  179.             align-items: center;
  180.             padding: 16px;
  181.             border-bottom: 1px solid #f0f0f0;
  182.             cursor: pointer;
  183.             transition: background-color 0.2s ease;
  184.         }

  185.         .radio-item:last-child {
  186.             border-bottom: none;
  187.         }

  188.         .radio-item:hover {
  189.             background-color: #f5f5f5;
  190.         }

  191.         .radio-item input[type="radio"] {
  192.             width: 20px;
  193.             height: 20px;
  194.             margin-right: 12px;
  195.             accent-color: #ff0000;
  196.             -webkit-appearance: none;
  197.             -moz-appearance: none;
  198.             appearance: none;
  199.             border: 1px solid #000;
  200.             border-radius: 50%;
  201.             background-color: #fff;
  202.             cursor: pointer;
  203.             position: relative;
  204.         }

  205.         .radio-item input[type="radio"]:checked {
  206.             background-color: #fff;
  207.             border-color: #ff0000;
  208.         }

  209.         .radio-item input[type="radio"]:checked::after {
  210.             content: "";
  211.             position: absolute;
  212.             top: 50%;
  213.             left: 50%;
  214.             transform: translate(-50%, -50%);
  215.             width: 10px;
  216.             height: 10px;
  217.             border-radius: 50%;
  218.             background-color: #ff0000;
  219.         }

  220.         .radio-item label {
  221.             flex: 1;
  222.             font-size: 16px;
  223.             color: #333;
  224.             cursor: pointer;
  225.         }

  226.         /* 运行按钮 */
  227.         .run-button {
  228.             width: 100%;
  229.             height: 56px;
  230.             background-color: #1976d2;
  231.             color: white;
  232.             border: none;
  233.             border-radius: 0;
  234.             font-size: 18px;
  235.             font-weight: 600;
  236.             cursor: pointer;
  237.             transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  238.             margin-top: 20px;
  239.             position: relative;
  240.             overflow: hidden;
  241.             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  242.         }

  243.         .run-button:hover {
  244.             background-color: #1565c0;
  245.             box-shadow: 0 4px 8px rgba(25, 118, 210, 0.3);
  246.             transform: translateY(-2px);
  247.         }

  248.         .run-button:active {
  249.             background-color: #0d47a1;
  250.             transform: scale(0.98) translateY(0);
  251.             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  252.         }

  253.         .run-button:disabled {
  254.             background-color: #90caf9;
  255.             cursor: not-allowed;
  256.             transform: none;
  257.             box-shadow: none;
  258.         }

  259.         /* 波纹效果 */
  260.         .run-button::before {
  261.             content: '';
  262.             position: absolute;
  263.             top: 50%;
  264.             left: 50%;
  265.             width: 0;
  266.             height: 0;
  267.             border-radius: 50%;
  268.             background-color: rgba(255, 255, 255, 0.5);
  269.             transform: translate(-50%, -50%);
  270.             transition: width 0.6s ease, height 0.6s ease;
  271.         }

  272.         .run-button:active::before {
  273.             width: 300px;
  274.             height: 300px;
  275.         }

  276.         /* 加载动画 */
  277.         @keyframes spin {
  278.             from { transform: rotate(0deg); }
  279.             to { transform: rotate(360deg); }
  280.         }

  281.         .run-button.loading {
  282.             background-color: #1976d2;
  283.         }

  284.         .run-button.loading::after {
  285.             content: '';
  286.             position: absolute;
  287.             top: 50%;
  288.             left: 50%;
  289.             width: 24px;
  290.             height: 24px;
  291.             margin-top: -12px;
  292.             margin-left: -12px;
  293.             border: 2px solid rgba(255, 255, 255, 0.3);
  294.             border-top-color: white;
  295.             border-radius: 50%;
  296.             animation: spin 0.8s linear infinite;
  297.         }

  298.         .run-button.loading span {
  299.             opacity: 0;
  300.         }





  301.         /* 响应式设计 */
  302.         @media (max-width: 375px) {
  303.             .mobile-container {
  304.                 max-width: 100%;
  305.             }
  306.         }

  307.         /* 适配iOS设备的特殊优化 */
  308.         @supports (-webkit-touch-callout: none) {
  309.             /* 适配iOS底部安全区域 */
  310.             .content {
  311.                 padding-bottom: calc(80px + env(safe-area-inset-bottom, 0));
  312.             }

  313.             /* 适配iOS顶部安全区域 */
  314.             .status-bar {
  315.                 padding-top: env(safe-area-inset-top, 0);
  316.                 height: calc(44px + env(safe-area-inset-top, 0));
  317.             }
  318.         }
  319.     </style>
  320. </head>
  321. <body>
  322.     <div class="mobile-container">
  323.         <!-- 顶部导航栏 -->
  324.         <div class="top-nav">
  325.             <a href="#" class="top-nav-item active">首页</a>
  326.             <a href="#" class="top-nav-item">第二页</a>
  327.             <a href="#" class="top-nav-item">第三页</a>
  328.             <a href="#" class="top-nav-item">第四页</a>
  329.         </div>
  330.         
  331.         <!-- 结果显示区域 -->
  332.         <div id="resultDisplay" style="
  333.             background-color: #f5f5f5;
  334.             padding: 10px;
  335.             margin: 0 10px 10px;
  336.             border-radius: 8px;
  337.             font-size: 14px;
  338.             color: #333;
  339.             max-height: 150px;
  340.             overflow-y: auto;
  341.             border: 1px solid #e0e0e0;
  342.         ">
  343.             <div style="font-weight: bold; margin-bottom: 5px;">交互结果:</div>
  344.             <div id="resultContent">初始化完成,等待交互...</div>
  345.         </div>
  346.         
  347.         <!-- 主要内容区域 -->
  348.         <div class="content">
  349.             <!-- 首页内容 -->
  350.             <div id="page1" class="page active">
  351.                 <!-- 返回按钮 -->
  352.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  353.                 <!-- 单选按钮组 -->
  354.                 <div class="radio-list">
  355.                     <div class="radio-item">
  356.                         <input type="radio" id="page1-item1" name="page1-radio" value="item1" onchange="handleSelectChange(this)">
  357.                         <label for="page1-item1">抖音极速版</label>
  358.                     </div>
  359.                     <div class="radio-item">
  360.                         <input type="radio" id="page1-item2" name="page1-radio" value="item2" onchange="handleSelectChange(this)">
  361.                         <label for="page1-item2">快手极速版</label>
  362.                     </div>
  363.                     <div class="radio-item">
  364.                         <input type="radio" id="page1-item3" name="page1-radio" value="item3" onchange="handleSelectChange(this)">
  365.                         <label for="page1-item3">汽水音乐</label>
  366.                     </div>
  367.                     <div class="radio-item">
  368.                         <input type="radio" id="page1-item4" name="page1-radio" value="item4" onchange="handleSelectChange(this)">
  369.                         <label for="page1-item4">番茄畅听音乐版</label>
  370.                     </div>
  371.                     <div class="radio-item">
  372.                         <input type="radio" id="page1-item5" name="page1-radio" value="item5" onchange="handleSelectChange(this)">
  373.                         <label for="page1-item5">西瓜视频</label>
  374.                     </div>
  375.                     <div class="radio-item">
  376.                         <input type="radio" id="page1-item6" name="page1-radio" value="item6" onchange="handleSelectChange(this)">
  377.                         <label for="page1-item6">番茄畅听</label>
  378.                     </div>
  379.                     <div class="radio-item">
  380.                         <input type="radio" id="page1-item7" name="page1-radio" value="item7" onchange="handleSelectChange(this)">
  381.                         <label for="page1-item7">番茄小说</label>
  382.                     </div>
  383.                     <div class="radio-item">
  384.                         <input type="radio" id="page1-item8" name="page1-radio" value="item8" onchange="handleSelectChange(this)">
  385.                         <label for="page1-item8">悟空浏览器</label>
  386.                     </div>
  387.                     <div class="radio-item">
  388.                         <input type="radio" id="page1-item9" name="page1-radio" value="item9" onchange="handleSelectChange(this)">
  389.                         <label for="page1-item9">红果短剧</label>
  390.                     </div>
  391.                     <div class="radio-item">
  392.                         <input type="radio" id="page1-item10" name="page1-radio" value="item10" onchange="handleSelectChange(this)">
  393.                         <label for="page1-item10">今日头条</label>
  394.                     </div>
  395.                     <div class="radio-item">
  396.                         <input type="radio" id="page1-item11" name="page1-radio" value="item11" onchange="handleSelectChange(this)">
  397.                         <label for="page1-item11">今日头条极速版</label>
  398.                     </div>
  399.                     <div class="radio-item">
  400.                         <input type="radio" id="page1-item12" name="page1-radio" value="item12" onchange="handleSelectChange(this)">
  401.                         <label for="page1-item12">喜番短剧</label>
  402.                     </div>
  403.                     <div class="radio-item">
  404.                         <input type="radio" id="page1-item13" name="page1-radio" value="item13" onchange="handleSelectChange(this)">
  405.                         <label for="page1-item13">快手正式版</label>
  406.                     </div>
  407.                     <div class="radio-item">
  408.                         <input type="radio" id="page1-item14" name="page1-radio" value="item14" onchange="handleSelectChange(this)">
  409.                         <label for="page1-item14">卸载APP</label>
  410.                     </div>
  411.                     <div class="radio-item">
  412.                         <input type="radio" id="page1-item15" name="page1-radio" value="item15" onchange="handleSelectChange(this)">
  413.                         <label for="page1-item15">测试2</label>
  414.                     </div>
  415.                 </div>

  416.                 <!-- 运行按钮 -->
  417.                 <button class="run-button" onclick="handleRunButton(this)"><span>点击运行</span></button>
  418.             </div>

  419.             <!-- 第二页内容 -->
  420.             <div id="page2" class="page">
  421.                 <!-- 返回按钮 -->
  422.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  423.                 <!-- 单选按钮组 -->
  424.                 <div class="radio-list">
  425.                     <div class="radio-item">
  426.                         <input type="radio" id="page2-item21" name="page2-radio" value="item21" onchange="handleSelectChange(this)">
  427.                         <label for="page2-item21">喜番快手正式快手极速</label>
  428.                     </div>
  429.                     <div class="radio-item">
  430.                         <input type="radio" id="page2-item22" name="page2-radio" value="item22" onchange="handleSelectChange(this)">
  431.                         <label for="page2-item22">抖音极速西瓜汽水</label>
  432.                     </div>
  433.                     <div class="radio-item">
  434.                         <input type="radio" id="page2-item23" name="page2-radio" value="item23" onchange="handleSelectChange(this)">
  435.                         <label for="page2-item23">红果悟空番茄畅听音乐</label>
  436.                     </div>
  437.                     <div class="radio-item">
  438.                         <input type="radio" id="page2-item24" name="page2-radio" value="item24" onchange="handleSelectChange(this)">
  439.                         <label for="page2-item24">番茄小说番茄畅听</label>
  440.                     </div>
  441.                     <div class="radio-item">
  442.                         <input type="radio" id="page2-item25" name="page2-radio" value="item25" onchange="handleSelectChange(this)">
  443.                         <label for="page2-item25">抖音极速西瓜汽水新手模式</label>
  444.                     </div>
  445.                     <div class="radio-item">
  446.                         <input type="radio" id="page2-item26" name="page2-radio" value="item26" onchange="handleSelectChange(this)">
  447.                         <label for="page2-item26">红果悟空番茄畅听音乐新手模式</label>
  448.                     </div>
  449.                     <div class="radio-item">
  450.                         <input type="radio" id="page2-item27" name="page2-radio" value="item27" onchange="handleSelectChange(this)">
  451.                         <label for="page2-item27">番茄小说番茄畅听新手模式</label>
  452.                     </div>
  453.                     <div class="radio-item">
  454.                         <input type="radio" id="page2-item28" name="page2-radio" value="item28" onchange="handleSelectChange(this)">
  455.                         <label for="page2-item28">喜番快手正式快手极速新手模式</label>
  456.                     </div>
  457.                     <div class="radio-item">
  458.                         <input type="radio" id="page2-item29" name="page2-radio" value="item29" onchange="handleSelectChange(this)">
  459.                         <label for="page2-item29">喜番快手正式快手极速周期</label>
  460.                     </div>
  461.                     <div class="radio-item">
  462.                         <input type="radio" id="page2-item30" name="page2-radio" value="item30" onchange="handleSelectChange(this)">
  463.                         <label for="page2-item30">抖音系周期任务</label>
  464.                     </div>
  465.                     <div class="radio-item">
  466.                         <input type="radio" id="page2-item31" name="page2-radio" value="item31" onchange="handleSelectChange(this)">
  467.                         <label for="page2-item31">抖音系周期养号</label>
  468.                     </div>
  469.                 </div>

  470.                 <!-- 运行按钮 -->
  471.                 <button class="run-button" onclick="handleRunButton(this)"><span>点击运行</span></button>
  472.             </div>

  473.             <!-- 第三页内容 -->
  474.             <div id="page3" class="page">
  475.                 <!-- 返回按钮 -->
  476.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  477.                 <!-- 单选按钮组 -->
  478.                 <div class="radio-list">
  479.                     <div class="radio-item">
  480.                         <input type="radio" id="page3-item41" name="page3-radio" value="item41" onchange="handleSelectChange(this)">
  481.                         <label for="page3-item41">抖音系周期养号</label>
  482.                     </div>
  483.                     <div class="radio-item">
  484.                         <input type="radio" id="page3-item42" name="page3-radio" value="item42" onchange="handleSelectChange(this)">
  485.                         <label for="page3-item42">抖音系周期任务</label>
  486.                     </div>
  487.                     <div class="radio-item">
  488.                         <input type="radio" id="page3-item43" name="page3-radio" value="item43" onchange="handleSelectChange(this)">
  489.                         <label for="page3-item43">喜番快手正式快手极速周期</label>
  490.                     </div>
  491.                     <div class="radio-item">
  492.                         <input type="radio" id="page3-item44" name="page3-radio" value="item44" onchange="handleSelectChange(this)">
  493.                         <label for="page3-item44">抖音系新手模式</label>
  494.                     </div>
  495.                     <div class="radio-item">
  496.                         <input type="radio" id="page3-item45" name="page3-radio" value="item45" onchange="handleSelectChange(this)">
  497.                         <label for="page3-item45">快手系新手模式</label>
  498.                     </div>
  499.                     <div class="radio-item">
  500.                         <input type="radio" id="page3-item46" name="page3-radio" value="item46" onchange="handleSelectChange(this)">
  501.                         <label for="page3-item46">番茄小说番茄畅听新手模式</label>
  502.                     </div>
  503.                     <div class="radio-item">
  504.                         <input type="radio" id="page3-item47" name="page3-radio" value="item47" onchange="handleSelectChange(this)">
  505.                         <label for="page3-item47">红果悟空番茄畅听音乐新手模式</label>
  506.                     </div>
  507.                     <div class="radio-item">
  508.                         <input type="radio" id="page3-item48" name="page3-radio" value="item48" onchange="handleSelectChange(this)">
  509.                         <label for="page3-item48">抖音极速西瓜汽水新手模式</label>
  510.                     </div>
  511.                     <div class="radio-item">
  512.                         <input type="radio" id="page3-item49" name="page3-radio" value="item49" onchange="handleSelectChange(this)">
  513.                         <label for="page3-item49">快手系新手模式</label>
  514.                     </div>
  515.                     <div class="radio-item">
  516.                         <input type="radio" id="page3-item50" name="page3-radio" value="item50" onchange="handleSelectChange(this)">
  517.                         <label for="page3-item50">番茄小说番茄畅听音乐</label>
  518.                     </div>
  519.                     <div class="radio-item">
  520.                         <input type="radio" id="page3-item51" name="page3-radio" value="item51" onchange="handleSelectChange(this)">
  521.                         <label for="page3-item51">抖音极速西瓜汽水</label>
  522.                     </div>
  523.                     <div class="radio-item">
  524.                         <input type="radio" id="page3-item52" name="page3-radio" value="item52" onchange="handleSelectChange(this)">
  525.                         <label for="page3-item52">喜番快手正式快手极速</label>
  526.                     </div>
  527.                 </div>

  528.                 <!-- 运行按钮 -->
  529.                 <button class="run-button" onclick="handleRunButton(this)"><span>点击运行</span></button>
  530.             </div>

  531.             <!-- 第四页内容(备用) -->
  532.             <div id="page4" class="page">
  533.                 <!-- 返回按钮 -->
  534.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  535.                 <!-- 单选按钮组 -->
  536.                 <div class="radio-list">
  537.                     <div class="radio-item">
  538.                         <input type="radio" id="page4-item61" name="page4-radio" value="item61" onchange="handleSelectChange(this)">
  539.                         <label for="page4-item61">备用任务1</label>
  540.                     </div>
  541.                     <div class="radio-item">
  542.                         <input type="radio" id="page4-item62" name="page4-radio" value="item62" onchange="handleSelectChange(this)">
  543.                         <label for="page4-item62">备用任务2</label>
  544.                     </div>
  545.                     <div class="radio-item">
  546.                         <input type="radio" id="page4-item63" name="page4-radio" value="item63" onchange="handleSelectChange(this)">
  547.                         <label for="page4-item63">备用任务3</label>
  548.                     </div>
  549.                     <div class="radio-item">
  550.                         <input type="radio" id="page4-item64" name="page4-radio" value="item64" onchange="handleSelectChange(this)">
  551.                         <label for="page4-item64">备用任务4</label>
  552.                     </div>
  553.                     <div class="radio-item">
  554.                         <input type="radio" id="page4-item65" name="page4-radio" value="item65" onchange="handleSelectChange(this)">
  555.                         <label for="page4-item65">备用任务5</label>
  556.                     </div>
  557.                     <div class="radio-item">
  558.                         <input type="radio" id="page4-item66" name="page4-radio" value="item66" onchange="handleSelectChange(this)">
  559.                         <label for="page4-item66">备用任务6</label>
  560.                     </div>
  561.                     <div class="radio-item">
  562.                         <input type="radio" id="page4-item67" name="page4-radio" value="item67" onchange="handleSelectChange(this)">
  563.                         <label for="page4-item67">备用任务7</label>
  564.                     </div>
  565.                     <div class="radio-item">
  566.                         <input type="radio" id="page4-item68" name="page4-radio" value="item68" onchange="handleSelectChange(this)">
  567.                         <label for="page4-item68">备用任务8</label>
  568.                     </div>
  569.                     <div class="radio-item">
  570.                         <input type="radio" id="page4-item69" name="page4-radio" value="item69" onchange="handleSelectChange(this)">
  571.                         <label for="page4-item69">备用任务9</label>
  572.                     </div>
  573.                     <div class="radio-item">
  574.                         <input type="radio" id="page4-item70" name="page4-radio" value="item70" onchange="handleSelectChange(this)">
  575.                         <label for="page4-item70">备用任务10</label>
  576.                     </div>
  577.                 </div>

  578.                 <!-- 运行按钮 -->
  579.                 <button class="run-button" onclick="handleRunButton(this)"><span>点击运行</span></button>
  580.             </div>
  581.         </div>


  582.     </div>

  583.     <script>
  584.         // 先定义showResult函数,确保在window.at对象初始化时可用
  585.         function showResult(result) {
  586.             try {
  587.                 var resultContent = document.getElementById('resultContent');
  588.                 if (resultContent) {
  589.                     var timestamp = new Date().toLocaleTimeString();
  590.                     var newResult = '<div style="margin-bottom: 5px; padding-bottom: 5px; border-bottom: 1px dashed #ddd;"><strong>[' + timestamp + ']</strong> ' + result + '</div>';
  591.                     resultContent.innerHTML = newResult + resultContent.innerHTML;
  592.                     
  593.                     // 限制结果显示数量
  594.                     var resultItems = resultContent.querySelectorAll('div');
  595.                     if (resultItems.length > 10) {
  596.                         for (var i = 10; i < resultItems.length; i++) {
  597.                             resultItems[i].remove();
  598.                         }
  599.                     }
  600.                 } else {
  601.                     console.log('结果显示区域不可用,使用console.log输出:', result);
  602.                 }
  603.             } catch (e) {
  604.                 console.error('调用showResult失败:', e.message);
  605.                 console.log('showResult错误日志:', result);
  606.             }
  607.         }
  608.         
  609.         // 定义空的webjs函数,避免AIWROK内部调用时出现"is not a function"错误
  610.         function webjs() {
  611.             printl('webjs函数被调用');
  612.         }
  613.         
  614.         // 定义临时的printl函数,避免页面加载时出现"is not defined"错误
  615.         // 主脚本.js加载后会自动覆盖这个定义
  616.         function printl(message) {
  617.             try {
  618.                 console.log('printl临时函数:', message);
  619.                 showResult(message);
  620.             } catch (e) {
  621.                 console.error('printl临时函数调用失败:', e.message);
  622.             }
  623.         }
  624.         
  625.         // AIWROK原生环境交互对象 - 主通信接口
  626.         window.at = window.at || {};
  627.         
  628.         // 初始化window.at对象的各种方法,确保与原生应用的交互能力
  629.         if (typeof window.at.callFunction === 'undefined') {
  630.             window.at.callFunction = function(functionName, params, callback) {
  631.                 printl('调用原生函数: ' + functionName + ' ' + JSON.stringify(params));
  632.                 showResult('调用原生函数: ' + functionName + ',参数: ' + JSON.stringify(params));
  633.                 if (typeof callback === 'function') {
  634.                     callback(JSON.stringify({result: '模拟返回结果', functionName: functionName}));
  635.                 }
  636.             };
  637.         }
  638.         
  639.         if (typeof window.at.runJs === 'undefined') {
  640.             window.at.runJs = function(jsCode, callback) {
  641.                 printl('运行原生JS代码: ' + jsCode.substring(0, 50) + (jsCode.length > 50 ? '...' : ''));
  642.                 showResult('运行原生JS代码: ' + jsCode.substring(0, 50) + (jsCode.length > 50 ? '...' : ''));
  643.                 if (typeof callback === 'function') {
  644.                     callback(JSON.stringify({result: 'JS代码执行成功', jsCode: jsCode}));
  645.                 }
  646.             };
  647.         }
  648.         
  649.         if (typeof window.at.setConfig === 'undefined') {
  650.             window.at.setConfig = function(key, value) {
  651.                 printl('设置配置: ' + key + ' = ' + value);
  652.                 showResult('设置配置: ' + key + ' = ' + value);
  653.                 try {
  654.                     localStorage.setItem(key, value);
  655.                     showToast('配置已设置');
  656.                 } catch (e) {
  657.                     console.warn('localStorage不可用:', e.message);
  658.                     if (!window._memoryStorage) {
  659.                         window._memoryStorage = {};
  660.                     }
  661.                     window._memoryStorage[key] = value;
  662.                     showToast('配置已记录');
  663.                 }
  664.             };
  665.         }
  666.         
  667.         if (typeof window.at.getConfig === 'undefined') {
  668.             window.at.getConfig = function(key, callback) {
  669.                 var value = '未设置';
  670.                 try {
  671.                     value = localStorage.getItem(key) || '未设置';
  672.                 } catch (e) {
  673.                     console.warn('localStorage不可用:', e.message);
  674.                     if (window._memoryStorage && window._memoryStorage[key] !== undefined) {
  675.                         value = window._memoryStorage[key];
  676.                     }
  677.                 }
  678.                
  679.                 showResult('获取配置: ' + key + ' = ' + value);
  680.                 if (typeof callback === 'function') {
  681.                     callback(value);
  682.                 }
  683.             };
  684.         }
  685.         
  686.         if (typeof window.at.publicSet === 'undefined') {
  687.             window.at.publicSet = function(key, value) {
  688.                 printl('设置公共变量: ' + key + ' = ' + value);
  689.                 showResult('设置公共变量: ' + key + ' = ' + value);
  690.                 window._publicData = window._publicData || {};
  691.                 window._publicData[key] = value;
  692.                 showToast('公共变量已设置');
  693.             };
  694.         }
  695.         
  696.         if (typeof window.at.publicGet === 'undefined') {
  697.             window.at.publicGet = function(key, callback) {
  698.                 var value = '未设置';
  699.                 window._publicData = window._publicData || {};
  700.                 if (window._publicData[key] !== undefined) {
  701.                     value = window._publicData[key];
  702.                 }
  703.                
  704.                 showResult('获取公共变量: ' + key + ' = ' + value);
  705.                 if (typeof callback === 'function') {
  706.                     callback(value);
  707.                 }
  708.             };
  709.         }
  710.         
  711.         if (typeof window.at.getRootPath === 'undefined') {
  712.             window.at.getRootPath = function(callback) {
  713.                 var path = '模拟根路径: /sdcard/AIWROK/';
  714.                 showResult('获取根路径: ' + path);
  715.                 if (typeof callback === 'function') {
  716.                     callback(path);
  717.                 }
  718.             };
  719.         }
  720.         
  721.         if (typeof window.at.getResourcesPath === 'undefined') {
  722.             window.at.getResourcesPath = function(callback) {
  723.                 var path = '模拟资源路径: /sdcard/AIWROK/resources/';
  724.                 showResult('获取资源路径: ' + path);
  725.                 if (typeof callback === 'function') {
  726.                     callback(path);
  727.                 }
  728.             };
  729.         }
  730.         
  731.         // 添加JsWebView类,支持new JsWebView().close()方式关闭界面
  732.         if (typeof JsWebView === 'undefined') {
  733.             function JsWebView() {
  734.                 // JsWebView构造函数
  735.             }
  736.             
  737.             JsWebView.prototype.close = function() {
  738.                 printl('使用JsWebView.close()关闭界面');
  739.                 showToast('关闭界面');
  740.                
  741.                 try {
  742.                     // 调用原生的dismiss方法
  743.                     if (window.at && typeof window.at.callFunction === 'function') {
  744.                         window.at.callFunction('dismiss', {}, function(result) {
  745.                             printl('关闭界面结果: ' + result);
  746.                         });
  747.                     }
  748.                     
  749.                     // 模拟关闭界面的视觉效果
  750.                     var mobileContainer = document.querySelector('.mobile-container');
  751.                     if (mobileContainer) {
  752.                         mobileContainer.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
  753.                         mobileContainer.style.opacity = '0';
  754.                         mobileContainer.style.transform = 'translateY(20px)';
  755.                         
  756.                         // 动画结束后隐藏元素
  757.                         setTimeout(function() {
  758.                             mobileContainer.style.display = 'none';
  759.                         }, 500);
  760.                     }
  761.                 } catch (e) {
  762.                     printl('调用JsWebView.close()失败: ' + e.message);
  763.                 }
  764.             };
  765.         }
  766.         
  767.         // 模拟AIWROK原生环境的交互方法(兼容旧代码)
  768.         // 在实际环境中,这些方法由原生应用提供
  769.         if (typeof setConfig === 'undefined') {
  770.             function setConfig(key, value) {
  771.                 try {
  772.                     if (window.at && typeof window.at.setConfig === 'function') {
  773.                         // 先保存到本地存储作为备份
  774.                         try {
  775.                             localStorage.setItem(key, value);
  776.                         } catch (localStorageError) {
  777.                             console.warn('localStorage不可用:', localStorageError.message);
  778.                         }
  779.                         
  780.                         // 调用原生方法并处理可能的异常
  781.                         try {
  782.                             window.at.setConfig(key, value);
  783.                             showToast('配置设置成功');
  784.                         } catch (nativeError) {
  785.                             printl('原生setConfig方法执行失败: ' + nativeError.message);
  786.                             showToast('配置已保存到本地');
  787.                         }
  788.                     } else {
  789.                         printl('window.at.setConfig 方法不可用,使用本地存储');
  790.                         showToast('设置配置: ' + key + ' = ' + value);
  791.                         showResult('设置配置: ' + key + ' = ' + value);
  792.                         // 尝试使用本地存储作为备选
  793.                         try {
  794.                             localStorage.setItem(key, value);
  795.                         } catch (e) {
  796.                             console.warn('localStorage不可用:', e.message);
  797.                         }
  798.                     }
  799.                 } catch (e) {
  800.                     printl('调用setConfig失败: ' + e.message);
  801.                     showToast('配置保存成功');
  802.                 }
  803.             }
  804.         }
  805.         
  806.         if (typeof getConfig === 'undefined') {
  807.             function getConfig(key, callback) {
  808.                 try {
  809.                     if (window.at && typeof window.at.getConfig === 'function') {
  810.                         window.at.getConfig(key, callback);
  811.                     } else {
  812.                         printl('window.at.getConfig 方法不可用,使用本地存储');
  813.                         var value = '未设置';
  814.                         // 尝试从本地存储获取
  815.                         try {
  816.                             value = localStorage.getItem(key) || '未设置';
  817.                         } catch (e) {
  818.                             console.warn('localStorage不可用:', e.message);
  819.                         }
  820.                         showResult('获取配置: ' + key + ' = ' + value);
  821.                         if (typeof callback === 'function') {
  822.                             callback(value);
  823.                         }
  824.                     }
  825.                 } catch (e) {
  826.                     printl('调用getConfig失败: ' + e.message);
  827.                     if (typeof callback === 'function') {
  828.                         callback('获取失败');
  829.                     }
  830.                 }
  831.             }
  832.         }

  833.         // 完全移除toast模拟,避免与原生toast对象冲突
  834.         // 统一使用showToast函数进行提示
  835.         
  836.         if (typeof printl === 'undefined') {
  837.             function printl(message) {
  838.                 try {
  839.                     printl('原生日志: ' + message);
  840.                     // 尝试调用原生printl函数
  841.                     if (window.at && typeof window.at.callFunction === 'function') {
  842.                         window.at.callFunction('printl', {message: message});
  843.                     } else {
  844.                         printl('window.at.callFunction 方法不可用,无法调用原生printl');
  845.                     }
  846.                     // 在H5页面上显示日志
  847.                     if (typeof showResult === 'function') {
  848.                         showResult(message);
  849.                     }
  850.                 } catch (e) {
  851.                     printl('调用printl失败: ' + e.message);
  852.                     // 确保日志至少在控制台输出
  853.                     printl('printl错误日志: ' + message);
  854.                 }
  855.             }
  856.         }
  857.         
  858.         if (typeof dismiss === 'undefined') {
  859.             function dismiss() {
  860.                 printl('关闭界面');
  861.                 showToast('关闭界面操作');
  862.                 window.at.callFunction('dismiss', {}, function(result) {
  863.                     printl('关闭界面结果: ' + result);
  864.                 });
  865.                
  866.                 // 模拟关闭界面的视觉效果
  867.                 var mobileContainer = document.querySelector('.mobile-container');
  868.                 if (mobileContainer) {
  869.                     mobileContainer.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
  870.                     mobileContainer.style.opacity = '0';
  871.                     mobileContainer.style.transform = 'translateY(20px)';
  872.                     
  873.                     // 动画结束后隐藏元素
  874.                     setTimeout(function() {
  875.                         mobileContainer.style.display = 'none';
  876.                     }, 500);
  877.                 }
  878.             }
  879.         }
  880.         
  881.         // 添加runJS函数,用于运行原生JS代码
  882.         if (typeof runJS === 'undefined') {
  883.             function runJS(func) {
  884.                 try {
  885.                     // 获取完整的函数代码字符串
  886.                     var jsCode = func.toString();
  887.                     
  888.                     // 显示执行状态
  889.                     showToast('正在执行脚本...');
  890.                     printl('执行JS代码: ' + jsCode.substring(0, 50) + (jsCode.length > 50 ? '...' : ''));
  891.                     
  892.                     if (window.at && typeof window.at.runJs === 'function') {
  893.                         // 调用原生方法,与h5Demo.html保持一致
  894.                         window.at.runJs(jsCode);
  895.                         showToast('脚本执行成功');
  896.                         showResult('已执行APP JS代码');
  897.                     } else {
  898.                         printl('window.at.runJs 方法不可用,尝试直接执行');
  899.                         // 直接在本地执行函数
  900.                         func();
  901.                         showToast('脚本本地执行成功');
  902.                         showResult('脚本本地执行成功');
  903.                     }
  904.                 } catch (e) {
  905.                     printl('调用runJS失败: ' + e.message);
  906.                     printl('错误堆栈: ' + e.stack);
  907.                     showToast('脚本执行失败');
  908.                     showResult('脚本执行失败: ' + e.message);
  909.                 }
  910.             }
  911.         }
  912.         
  913.         // 添加runJSFile函数,用于运行原生JS文件
  914.         if (typeof runJSFile === 'undefined') {
  915.             function runJSFile(filePath) {
  916.                 try {
  917.                     if (window.at && typeof window.at.runJsFile === 'function') {
  918.                         window.at.runJsFile(filePath);
  919.                         showToast('运行JS文件成功');
  920.                         showResult('已执行APP JS文件: ' + filePath);
  921.                     } else {
  922.                         printl('window.at.runJsFile 方法不可用,无法运行JS文件');
  923.                         showToast('运行JS文件失败: ' + filePath);
  924.                         showResult('运行JS文件失败: ' + filePath);
  925.                     }
  926.                 } catch (e) {
  927.                     printl('调用runJSFile失败: ' + e.message);
  928.                     showToast('运行JS文件失败');
  929.                     showResult('运行JS文件失败: ' + e.message);
  930.                 }
  931.             }
  932.         }
  933.         
  934.         // 添加callAppMain函数,用于调用原生应用主函数
  935.         if (typeof callAppMain === 'undefined') {
  936.             function callAppMain(funcName, params, callback) {
  937.                 try {
  938.                     if (window.at && typeof window.at.callFunction === 'function') {
  939.                         // 调用原生方法并处理可能的异常
  940.                         try {
  941.                             window.at.callFunction(funcName, params, callback);
  942.                             showToast('调用成功');
  943.                         } catch (nativeError) {
  944.                             printl('原生callFunction方法执行失败: ' + nativeError.message);
  945.                             showToast('功能已执行');
  946.                         }
  947.                     } else {
  948.                         printl('window.at.callFunction 方法不可用,尝试本地处理');
  949.                         showToast('功能已执行');
  950.                         showResult('功能已在本地环境处理');
  951.                         if (typeof callback === 'function') {
  952.                             callback(JSON.stringify({result: '功能已处理', message: '本地环境执行'}));
  953.                         }
  954.                     }
  955.                 } catch (e) {
  956.                     printl('调用callAppMain失败: ' + e.message);
  957.                     showToast('功能已执行');
  958.                     if (typeof callback === 'function') {
  959.                         callback(JSON.stringify({result: '功能已处理', message: '已忽略兼容性警告'}));
  960.                     }
  961.                 }
  962.             }
  963.         }
  964.         
  965.         // 添加runAppJs函数,用于运行原生JS代码
  966.         if (typeof runAppJs === 'undefined') {
  967.             function runAppJs() {
  968.                 try {
  969.                     window.at.runJs(function() {
  970.                         printl("H5触发APP执行JS代码");
  971.                         // 这里可以执行任何APP端的JS代码
  972.                     }.toString());
  973.                     showResult("已执行APP JS代码");
  974.                 } catch (e) {
  975.                     showResult("执行APP JS代码失败: " + e);
  976.                 }
  977.             }
  978.         }

  979.         // 自定义Toast提示
  980.         function showToast(message) {
  981.             var toast = document.getElementById('custom-toast');
  982.             if (!toast) {
  983.                 toast = document.createElement('div');
  984.                 toast.id = 'custom-toast';
  985.                 toast.style.cssText =
  986.                     'position: fixed;' +
  987.                     'top: 50%;' +
  988.                     'left: 50%;' +
  989.                     'transform: translate(-50%, -50%);' +
  990.                     'background: rgba(0, 0, 0, 0.7);' +
  991.                     'color: white;' +
  992.                     'padding: 12px 24px;' +
  993.                     'border-radius: 8px;' +
  994.                     'font-size: 14px;' +
  995.                     'z-index: 9999;' +
  996.                     'opacity: 0;' +
  997.                     'transition: opacity 0.3s ease, transform 0.3s ease;' +
  998.                     'transform: translate(-50%, -50%) scale(0.9);';
  999.                 document.body.appendChild(toast);
  1000.             }
  1001.             
  1002.             if (toast.timer) {
  1003.                 clearTimeout(toast.timer);
  1004.             }
  1005.             
  1006.             toast.textContent = message;
  1007.             toast.style.opacity = '1';
  1008.             toast.style.transform = 'translate(-50%, -50%) scale(1)';
  1009.             
  1010.             toast.timer = setTimeout(function() {
  1011.                 toast.style.opacity = '0';
  1012.                 toast.style.transform = 'translate(-50%, -50%) scale(0.9)';
  1013.             }, 2000);
  1014.         }
  1015.         
  1016.         // 显示交互结果的函数已在页面顶部定义
  1017.         
  1018.         // 保存用户操作到配置
  1019.         function saveUserAction(action, value) {
  1020.             var timestamp = new Date().toISOString();
  1021.             printl('保存用户操作:' + action + ' 时间戳:' + timestamp);
  1022.             setConfig('last_' + action, timestamp);
  1023.             if (value) {
  1024.                 setConfig(action, value);
  1025.             }
  1026.         }
  1027.         
  1028.         // 添加按钮点击反馈
  1029.         function addButtonFeedback() {
  1030.             var buttons = document.querySelectorAll('.back-button, .run-button');
  1031.             for (var i = 0; i < buttons.length; i++) {
  1032.                 (function(button) {
  1033.                     button.addEventListener('mousedown', function() {
  1034.                         this.style.transform = 'scale(0.95)';
  1035.                     });
  1036.                     
  1037.                     button.addEventListener('mouseup', function() {
  1038.                         this.style.transform = 'scale(1)';
  1039.                     });
  1040.                     
  1041.                     button.addEventListener('mouseleave', function() {
  1042.                         this.style.transform = 'scale(1)';
  1043.                     });
  1044.                 })(buttons[i]);
  1045.             }
  1046.         }

  1047.         // AIWROK标准的返回按钮点击处理
  1048.         function handleBackButton() {
  1049.             printl('返回按钮被点击');
  1050.             saveUserAction('back_button_click');
  1051.             

  1052.             
  1053.             // 如果当前是第一页,关闭界面
  1054.             if (currentPageId === 1) {
  1055.                 showToast('关闭界面');
  1056.                 dismiss();
  1057.             } else {
  1058.                 // 从历史记录中移除当前页面
  1059.                 pageHistory.pop();
  1060.                 // 获取上一页的ID
  1061.                 var previousPageId = pageHistory[pageHistory.length - 1];
  1062.                
  1063.                 // 隐藏所有页面
  1064.                 var pages = document.querySelectorAll('.page');
  1065.                 for (var i = 0; i < pages.length; i++) {
  1066.                     pages[i].classList.remove('active');
  1067.                 }
  1068.                
  1069.                 // 显示上一页
  1070.                 var previousPage = document.getElementById('page' + previousPageId);
  1071.                 if (previousPage) {
  1072.                     previousPage.classList.add('active');
  1073.                 }
  1074.                
  1075.                 // 更新导航栏状态
  1076.                 var navItems = document.querySelectorAll('.top-nav-item');
  1077.                 for (var j = 0; j < navItems.length; j++) {
  1078.                     navItems[j].classList.remove('active');
  1079.                 }
  1080.                 navItems[previousPageId - 1].classList.add('active');
  1081.                
  1082.                 // 更新当前页面ID
  1083.                 currentPageId = previousPageId;
  1084.                
  1085.                 showToast('返回上一页');
  1086.                 printl('返回到页面: ' + previousPageId);
  1087.             }
  1088.         }

  1089.         // AIWROK标准的运行按钮点击处理
  1090.         function handleRunButton(button) {
  1091.             // 如果按钮已经处于加载状态,不执行任何操作
  1092.             if (button.classList.contains('loading')) {
  1093.                 return;
  1094.             }
  1095.             
  1096.             printl('运行按钮被点击');
  1097.             saveUserAction('run_button_click');
  1098.             
  1099.             // 添加加载状态
  1100.             button.classList.add('loading');
  1101.             button.disabled = true;
  1102.             
  1103.             showToast('开始执行任务');
  1104.             

  1105.             
  1106.             // 根据当前页面执行对应的脚本
  1107.             var selectedItems = [];
  1108.             
  1109.             // 获取当前页面选中的单选按钮
  1110.             var currentPage = document.getElementById('page' + currentPageId);
  1111.             var radioButtons = currentPage.querySelectorAll('input[type="radio"]:checked');
  1112.             
  1113.             // 检查是否有选中的值
  1114.             if (radioButtons.length > 0) {
  1115.                 var radioButton = radioButtons[0]; // 只取第一个选中的(应该只有一个)
  1116.                 var itemId = radioButton.value;
  1117.                 var label = radioButton.nextElementSibling.textContent;
  1118.                
  1119.                 printl('执行脚本: ' + label);
  1120.                 selectedItems.push(label);
  1121.                
  1122.                 // 根据不同页面和选择项执行不同的函数
  1123.                 if (currentPageId === 1) {
  1124.                     // 第一页脚本
  1125.                     switch (itemId) {
  1126.                         case 'item1': runJS(function() { 抖音极速(); }); break;
  1127.                         case 'item2': runJS(function() { 快手极速(); }); break;
  1128.                         case 'item3': runJS(function() { 汽水音乐(); }); break;
  1129.                         case 'item4': runJS(function() { 番茄畅听音乐(); }); break;
  1130.                         case 'item5': runJS(function() { 西瓜视频(); }); break;
  1131.                         case 'item6': runJS(function() { 番茄畅听(); }); break;
  1132.                         case 'item7': runJS(function() { 番茄小说(); }); break;
  1133.                         case 'item8': runJS(function() { 悟空浏览器(); }); break;
  1134.                         case 'item9': runJS(function() { 红果短剧(); }); break;
  1135.                         case 'item10': runJS(function() { 头条广告单版(); }); break;
  1136.                         case 'item11': runJS(function() { 头条极速广告单版(); }); break;
  1137.                         case 'item12': runJS(function() { 喜番短剧(); }); break;
  1138.                         case 'item13': runJS(function() { 快手正式(); }); break;
  1139.                         case 'item14': runJS(function() { 苹果删除APP(); }); break;
  1140.                         case 'item15': runJS(function() { 测试函数2(); printl('测试2脚本已启动'); }); break;
  1141.                     }
  1142.                 } else if (currentPageId === 2) {
  1143.                     // 第二页脚本
  1144.                     switch (itemId) {
  1145.                         case 'item21': runJS(function() { 喜番快手正式快手极速(); printl('喜番极速快手正式快手混跑脚本已启动'); }); break;
  1146.                         case 'item22': runJS(function() { 抖音极速西瓜汽水(); printl('极速抖音混跑脚本已启动'); }); break;
  1147.                         case 'item23': runJS(function() { 红果悟空番茄畅听音乐(); printl('红果混跑脚本已启动'); }); break;
  1148.                         case 'item24': runJS(function() { 番茄小说番茄畅听(); printl('番茄小说混跑脚本已启动'); }); break;
  1149.                         case 'item25': runJS(function() { 抖音极速西瓜汽水新手(); printl('西瓜视频脚本已启动'); }); break;
  1150.                         case 'item26': runJS(function() { 红果悟空番茄畅听音乐新手(); printl('番茄畅听脚本已启动'); }); break;
  1151.                         case 'item27': runJS(function() { 番茄小说番茄畅听新手(); printl('番茄小说脚本已启动'); }); break;
  1152.                         case 'item28': runJS(function() { 喜番快手正式快手极速新手模式(); printl('喜番快手正式快手极速新手模式已启动'); }); break;
  1153.                         case 'item29': runJS(function() { 喜番快手正式快手极速周期(); }); break;
  1154.                         case 'item30': runJS(function() { 抖音系周期做任务(); }); break;
  1155.                         case 'item31': runJS(function() { 抖音系周期养号(); }); break;
  1156.                     }
  1157.                 } else if (currentPageId === 3) {
  1158.                     // 第三页脚本
  1159.                     switch (itemId) {
  1160.                         case 'item41': runJS(function() { 抖音系周期养号(); printl('抖音系周期养号脚本已启动'); }); break;
  1161.                         case 'item42': runJS(function() { 抖音系周期做任务(); printl('抖音系周期任务脚本已启动'); }); break;
  1162.                         case 'item43': runJS(function() { 喜番快手正式快手极速周期(); printl('喜番快手正式快手极速周期脚本已启动'); }); break;
  1163.                         case 'item44': runJS(function() { 抖音系新手模式(); printl('抖音系新手模式脚本已启动'); }); break;
  1164.                         case 'item45': runJS(function() { 快手系新手模式(); printl('快手系新手模式脚本已启动'); }); break;
  1165.                         case 'item46': runJS(function() { 番茄小说番茄畅听新手(); printl('番茄小说番茄畅听新手模式脚本已启动'); }); break;
  1166.                         case 'item47': runJS(function() { 红果悟空番茄畅听音乐新手(); printl('红果悟空番茄畅听音乐新手模式脚本已启动'); }); break;
  1167.                         case 'item48': runJS(function() { 抖音极速西瓜汽水新手(); printl('抖音极速西瓜汽水新手模式脚本已启动'); }); break;
  1168.                         case 'item49': runJS(function() { 快手系新手模式(); printl('快手系新手模式脚本已启动'); }); break;
  1169.                         case 'item50': runJS(function() { 番茄小说番茄畅听(); printl('番茄小说番茄畅听音乐脚本已启动'); }); break;
  1170.                         case 'item51': runJS(function() { 抖音极速西瓜汽水(); printl('抖音极速西瓜汽水脚本已启动'); }); break;
  1171.                         case 'item52': runJS(function() { 喜番快手正式快手极速(); printl('喜番快手正式快手极速脚本已启动'); }); break;
  1172.                     }
  1173.                 } else if (currentPageId === 4) {
  1174.                     // 第四页备用脚本
  1175.                     switch (itemId) {
  1176.                         case 'item61': runJS(function() { 备用任务1(); printl('备用任务1脚本已启动'); }); break;
  1177.                         case 'item62': runJS(function() { 备用任务2(); printl('备用任务2脚本已启动'); }); break;
  1178.                         case 'item63': runJS(function() { 备用任务3(); printl('备用任务3脚本已启动'); }); break;
  1179.                         case 'item64': runJS(function() { 备用任务4(); printl('备用任务4脚本已启动'); }); break;
  1180.                         case 'item65': runJS(function() { 备用任务5(); printl('备用任务5脚本已启动'); }); break;
  1181.                         case 'item66': runJS(function() { 备用任务6(); printl('备用任务6脚本已启动'); }); break;
  1182.                         case 'item67': runJS(function() { 备用任务7(); printl('备用任务7脚本已启动'); }); break;
  1183.                         case 'item68': runJS(function() { 备用任务8(); printl('备用任务8脚本已启动'); }); break;
  1184.                         case 'item69': runJS(function() { 备用任务9(); printl('备用任务9脚本已启动'); }); break;
  1185.                         case 'item70': runJS(function() { 备用任务10(); printl('备用任务10脚本已启动'); }); break;
  1186.                     }
  1187.                 }
  1188.             }
  1189.             
  1190.             // 如果没有选中任何任务
  1191.             if (selectedItems.length === 0) {
  1192.                 showToast('请先选择要执行的任务');
  1193.             }
  1194.             
  1195.             // 模拟任务执行过程
  1196.             setTimeout(function() {
  1197.                 // 移除加载状态
  1198.                 button.classList.remove('loading');
  1199.                 button.disabled = false;
  1200.                
  1201.                 // 显示执行完成提示
  1202.                 if (selectedItems.length > 0) {
  1203.                     showToast('任务执行完成');
  1204.                     
  1205.                     // 添加返回桌面功能,但保持H5界面打开以继续运行脚本
  1206.                     try {
  1207.                         window.at.runJs(function() {
  1208.                             printl("H5触发APP返回桌面");
  1209.                             auto.home(); // 返回桌面
  1210.                         }.toString());
  1211.                         showResult("已触发APP返回桌面");
  1212.                     } catch (e) {
  1213.                         showResult("返回桌面失败: " + e);
  1214.                     }
  1215.                 }
  1216.             }, 2000);
  1217.         }



  1218.         // 页面历史记录,用于实现返回功能
  1219.         var pageHistory = [1]; // 初始页面是第一页
  1220.         var currentPageId = 1;

  1221.         // AIWROK标准的选择框/单选按钮变化处理 - 确保全局只能选择一个任务
  1222.         function handleSelectChange(element) {
  1223.             var selectedValue = element.value;
  1224.             var selectedText;
  1225.             
  1226.             if (element.tagName === 'SELECT') {
  1227.                 // 处理下拉选择框(兼容旧代码)
  1228.                 selectedText = element.options[element.selectedIndex].text;
  1229.             } else if (element.tagName === 'INPUT' && element.type === 'radio') {
  1230.                 // 处理单选按钮
  1231.                 selectedText = element.nextElementSibling.textContent;
  1232.             }
  1233.             
  1234.             // 重置所有其他页面的选择器
  1235.             var allSelects = document.querySelectorAll('select');
  1236.             for (var i = 0; i < allSelects.length; i++) {
  1237.                 if (allSelects[i] !== element) {
  1238.                     allSelects[i].value = '';
  1239.                 }
  1240.             }
  1241.             
  1242.             var allRadios = document.querySelectorAll('input[type="radio"]');
  1243.             for (var j = 0; j < allRadios.length; j++) {
  1244.                 if (allRadios[j] !== element) {
  1245.                     allRadios[j].checked = false;
  1246.                 }
  1247.             }
  1248.             
  1249.             if (selectedValue) {
  1250.                 printl('选中: ' + selectedText);
  1251.                 saveUserAction('select_' + element.id, selectedValue);
  1252.             } else {
  1253.                 printl('未选择任何任务');
  1254.                 saveUserAction('select_' + element.id, '');
  1255.             }
  1256.         }

  1257.         // 保持兼容旧的复选框变化处理函数
  1258.         function handleCheckboxChange(checkbox) {
  1259.             try {
  1260.                 var label = checkbox.nextElementSibling;
  1261.                 if (checkbox.checked) {
  1262.                     label.style.color = '#d32f2f';
  1263.                     label.style.fontWeight = '600';
  1264.                     printl('选中: ' + label.textContent);
  1265.                     saveUserAction('checkbox_' + checkbox.id, 'checked');
  1266.                 } else {
  1267.                     label.style.color = '#333';
  1268.                     label.style.fontWeight = 'normal';
  1269.                     printl('取消选中: ' + label.textContent);
  1270.                     saveUserAction('checkbox_' + checkbox.id, 'unchecked');
  1271.                 }
  1272.             } catch (e) {
  1273.                 printl('handleCheckboxChange错误: ' + e.message);
  1274.             }
  1275.         }

  1276.         // 页面切换函数
  1277.         function switchPage(pageId) {
  1278.             // 如果是当前页面,不进行切换
  1279.             if (currentPageId === pageId) {
  1280.                 return;
  1281.             }

  1282.             // 隐藏所有页面
  1283.             var pages = document.querySelectorAll('.page');
  1284.             for (var i = 0; i < pages.length; i++) {
  1285.                 pages[i].classList.remove('active');
  1286.             }

  1287.             // 显示选中的页面
  1288.             var selectedPage = document.getElementById('page' + pageId);
  1289.             if (selectedPage) {
  1290.                 selectedPage.classList.add('active');
  1291.             }

  1292.             // 更新导航栏状态
  1293.             var navItems = document.querySelectorAll('.top-nav-item');
  1294.             for (var j = 0; j < navItems.length; j++) {
  1295.                 navItems[j].classList.remove('active');
  1296.             }
  1297.             navItems[pageId - 1].classList.add('active');

  1298.             // 记录页面历史
  1299.             pageHistory.push(pageId);
  1300.             currentPageId = pageId;

  1301.             printl('切换到页面: ' + pageId);
  1302.         }

  1303.         // 页面加载完成后初始化
  1304.         window.onload = function() {
  1305.             printl('页面加载完成');
  1306.             
  1307.             // 执行APP JS文件,与h5Demo.html保持一致
  1308.             if (window.at && typeof window.at.runJsFile === 'function') {
  1309.                 window.at.runJsFile("主脚本.js");
  1310.                 printl('已执行APP JS文件: 主脚本.js');
  1311.             } else {
  1312.                 printl('runJsFile方法不可用,尝试使用script标签加载');
  1313.                 // 使用script标签加载主脚本
  1314.                 var scriptTag = document.createElement('script');
  1315.                 scriptTag.src = '主脚本.js';
  1316.                 scriptTag.onload = function() {
  1317.                     printl('主脚本.js已通过script标签加载完成');
  1318.                 };
  1319.                 scriptTag.onerror = function() {
  1320.                     printl('主脚本.js加载失败');
  1321.                 };
  1322.                 document.body.appendChild(scriptTag);
  1323.             }
  1324.             
  1325.             // 为导航栏添加点击事件
  1326.             var navItems = document.querySelectorAll('.top-nav-item');
  1327.             for (var i = 0; i < navItems.length; i++) {
  1328.                 (function(index) {
  1329.                     navItems[index].addEventListener('click', function(e) {
  1330.                         e.preventDefault();
  1331.                         switchPage(index + 1);
  1332.                     });
  1333.                 })(i);
  1334.             }
  1335.             
  1336.             // 添加按钮点击反馈
  1337.             addButtonFeedback();
  1338.             
  1339.             printl('初始化完成,所有交互功能已就绪');
  1340.         };
  1341.     </script>
  1342. </body>
  1343. </html>
复制代码





untoH5任务脚本选择与执行中心nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖