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

[24小时收录超级好的网站] H5任务脚本选择与执行中心

[复制链接]

2452

主题

2500

帖子

1万

积分

积分
14916
跳转到指定楼层
楼主
H5任务脚本选择与执行中心
H5任务脚本选择与执行中心 群发软件发帖工具

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.             -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.         .run-button {
  173.             width: 100%;
  174.             height: 56px;
  175.             background-color: #1976d2;
  176.             color: white;
  177.             border: none;
  178.             border-radius: 0;
  179.             font-size: 18px;
  180.             font-weight: 600;
  181.             cursor: pointer;
  182.             transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  183.             margin-top: 20px;
  184.             position: relative;
  185.             overflow: hidden;
  186.             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  187.         }

  188.         .run-button:hover {
  189.             background-color: #1565c0;
  190.             box-shadow: 0 4px 8px rgba(25, 118, 210, 0.3);
  191.             transform: translateY(-2px);
  192.         }

  193.         .run-button:active {
  194.             background-color: #0d47a1;
  195.             transform: scale(0.98) translateY(0);
  196.             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  197.         }

  198.         .run-button:disabled {
  199.             background-color: #90caf9;
  200.             cursor: not-allowed;
  201.             transform: none;
  202.             box-shadow: none;
  203.         }

  204.         /* 波纹效果 */
  205.         .run-button::before {
  206.             content: '';
  207.             position: absolute;
  208.             top: 50%;
  209.             left: 50%;
  210.             width: 0;
  211.             height: 0;
  212.             border-radius: 50%;
  213.             background-color: rgba(255, 255, 255, 0.5);
  214.             transform: translate(-50%, -50%);
  215.             transition: width 0.6s ease, height 0.6s ease;
  216.         }

  217.         .run-button:active::before {
  218.             width: 300px;
  219.             height: 300px;
  220.         }

  221.         /* 加载动画 */
  222.         @keyframes spin {
  223.             from { transform: rotate(0deg); }
  224.             to { transform: rotate(360deg); }
  225.         }

  226.         .run-button.loading {
  227.             background-color: #1976d2;
  228.         }

  229.         .run-button.loading::after {
  230.             content: '';
  231.             position: absolute;
  232.             top: 50%;
  233.             left: 50%;
  234.             width: 24px;
  235.             height: 24px;
  236.             margin-top: -12px;
  237.             margin-left: -12px;
  238.             border: 2px solid rgba(255, 255, 255, 0.3);
  239.             border-top-color: white;
  240.             border-radius: 50%;
  241.             animation: spin 0.8s linear infinite;
  242.         }

  243.         .run-button.loading span {
  244.             opacity: 0;
  245.         }





  246.         /* 响应式设计 */
  247.         @media (max-width: 375px) {
  248.             .mobile-container {
  249.                 max-width: 100%;
  250.             }
  251.         }

  252.         /* 适配iOS设备的特殊优化 */
  253.         @supports (-webkit-touch-callout: none) {
  254.             /* 适配iOS底部安全区域 */
  255.             .content {
  256.                 padding-bottom: calc(80px + env(safe-area-inset-bottom, 0));
  257.             }

  258.             /* 适配iOS顶部安全区域 */
  259.             .status-bar {
  260.                 padding-top: env(safe-area-inset-top, 0);
  261.                 height: calc(44px + env(safe-area-inset-top, 0));
  262.             }
  263.         }
  264.     </style>
  265. </head>
  266. <body>
  267.     <div class="mobile-container">
  268.         <!-- 顶部导航栏 -->
  269.         <div class="top-nav">
  270.             <a href="#" class="top-nav-item active">首页</a>
  271.             <a href="#" class="top-nav-item">第二页</a>
  272.             <a href="#" class="top-nav-item">第三页</a>
  273.             <a href="#" class="top-nav-item">第四页</a>
  274.         </div>
  275.         
  276.         <!-- 结果显示区域 -->
  277.         <div id="resultDisplay" style="
  278.             background-color: #f5f5f5;
  279.             padding: 10px;
  280.             margin: 0 10px 10px;
  281.             border-radius: 8px;
  282.             font-size: 14px;
  283.             color: #333;
  284.             max-height: 150px;
  285.             overflow-y: auto;
  286.             border: 1px solid #e0e0e0;
  287.         ">
  288.             <div style="font-weight: bold; margin-bottom: 5px;">交互结果:</div>
  289.             <div id="resultContent">初始化完成,等待交互...</div>
  290.         </div>
  291.         
  292.         <!-- 主要内容区域 -->
  293.         <div class="content">
  294.             <!-- 首页内容 -->
  295.             <div id="page1" class="page active">
  296.                 <!-- 返回按钮 -->
  297.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  298.                 <!-- 下拉选择框 -->
  299.                 <div class="select-list">
  300.                     <div class="select-item">
  301.                         <select id="page1-select" onchange="handleSelectChange(this)">
  302.                             <option value="">请选择要执行的任务</option>
  303.                             <option value="item1">抖音极速版</option>
  304.                             <option value="item2">快手极速版</option>
  305.                             <option value="item3">汽水音乐</option>
  306.                             <option value="item4">番茄畅听音乐版</option>
  307.                             <option value="item5">西瓜视频</option>
  308.                             <option value="item6">番茄畅听</option>
  309.                             <option value="item7">番茄小说</option>
  310.                             <option value="item8">悟空浏览器</option>
  311.                             <option value="item9">红果短剧</option>
  312.                             <option value="item10">今日头条</option>
  313.                             <option value="item11">今日头条极速版</option>
  314.                             <option value="item12">喜番短剧</option>
  315.                             <option value="item13">快手正式版</option>
  316.                             <option value="item14">卸载APP</option>
  317.                             <option value="item15">测试2</option>
  318.                         </select>
  319.                     </div>
  320.                 </div>

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

  324.             <!-- 第二页内容 -->
  325.             <div id="page2" class="page">
  326.                 <!-- 返回按钮 -->
  327.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  328.                 <!-- 下拉选择框 -->
  329.                 <div class="select-list">
  330.                     <div class="select-item">
  331.                         <select id="page2-select" onchange="handleSelectChange(this)">
  332.                             <option value="">请选择要执行的任务</option>
  333.                             <option value="item21">喜番快手正式快手极速</option>
  334.                             <option value="item22">抖音极速西瓜汽水</option>
  335.                             <option value="item23">红果悟空番茄畅听音乐</option>
  336.                             <option value="item24">番茄小说番茄畅听</option>
  337.                             <option value="item25">抖音极速西瓜汽水新手模式</option>
  338.                             <option value="item26">红果悟空番茄畅听音乐新手模式</option>
  339.                             <option value="item27">番茄小说番茄畅听新手模式</option>
  340.                             <option value="item28">喜番快手正式快手极速新手模式</option>
  341.                             <option value="item29">喜番快手正式快手极速周期</option>
  342.                             <option value="item30">抖音系周期任务</option>
  343.                             <option value="item31">抖音系周期养号</option>
  344.                         </select>
  345.                     </div>
  346.                 </div>

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

  350.             <!-- 第三页内容 -->
  351.             <div id="page3" class="page">
  352.                 <!-- 返回按钮 -->
  353.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  354.                 <!-- 下拉选择框 -->
  355.                 <div class="select-list">
  356.                     <div class="select-item">
  357.                         <select id="page3-select" onchange="handleSelectChange(this)">
  358.                             <option value="">请选择要执行的任务</option>
  359.                             <option value="item41">抖音系周期养号</option>
  360.                             <option value="item42">抖音系周期任务</option>
  361.                             <option value="item43">喜番快手正式快手极速周期</option>
  362.                             <option value="item44">抖音系新手模式</option>
  363.                             <option value="item45">快手系新手模式</option>
  364.                             <option value="item46">番茄小说番茄畅听新手模式</option>
  365.                             <option value="item47">红果悟空番茄畅听音乐新手模式</option>
  366.                             <option value="item48">抖音极速西瓜汽水新手模式</option>
  367.                             <option value="item49">快手系新手模式</option>
  368.                             <option value="item50">番茄小说番茄畅听音乐</option>
  369.                             <option value="item51">抖音极速西瓜汽水</option>
  370.                             <option value="item52">喜番快手正式快手极速</option>
  371.                         </select>
  372.                     </div>
  373.                 </div>

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

  377.             <!-- 第四页内容(备用) -->
  378.             <div id="page4" class="page">
  379.                 <!-- 返回按钮 -->
  380.                 <button class="back-button" onclick="handleBackButton()">返回</button>

  381.                 <!-- 下拉选择框 -->
  382.                 <div class="select-list">
  383.                     <div class="select-item">
  384.                         <select id="page4-select" onchange="handleSelectChange(this)">
  385.                             <option value="">请选择要执行的任务</option>
  386.                             <option value="item61">备用任务1</option>
  387.                             <option value="item62">备用任务2</option>
  388.                             <option value="item63">备用任务3</option>
  389.                             <option value="item64">备用任务4</option>
  390.                             <option value="item65">备用任务5</option>
  391.                             <option value="item66">备用任务6</option>
  392.                             <option value="item67">备用任务7</option>
  393.                             <option value="item68">备用任务8</option>
  394.                             <option value="item69">备用任务9</option>
  395.                             <option value="item70">备用任务10</option>
  396.                         </select>
  397.                     </div>
  398.                 </div>

  399.                 <!-- 运行按钮 -->
  400.                 <button class="run-button" onclick="handleRunButton(this)"><span>点击运行</span></button>
  401.             </div>
  402.         </div>


  403.     </div>

  404.     <script>
  405.         // 先定义showResult函数,确保在window.at对象初始化时可用
  406.         function showResult(result) {
  407.             try {
  408.                 var resultContent = document.getElementById('resultContent');
  409.                 if (resultContent) {
  410.                     var timestamp = new Date().toLocaleTimeString();
  411.                     var newResult = '<div style="margin-bottom: 5px; padding-bottom: 5px; border-bottom: 1px dashed #ddd;"><strong>[' + timestamp + ']</strong> ' + result + '</div>';
  412.                     resultContent.innerHTML = newResult + resultContent.innerHTML;
  413.                     
  414.                     // 限制结果显示数量
  415.                     var resultItems = resultContent.querySelectorAll('div');
  416.                     if (resultItems.length > 10) {
  417.                         for (var i = 10; i < resultItems.length; i++) {
  418.                             resultItems[i].remove();
  419.                         }
  420.                     }
  421.                 } else {
  422.                     console.log('结果显示区域不可用,使用console.log输出:', result);
  423.                 }
  424.             } catch (e) {
  425.                 console.error('调用showResult失败:', e.message);
  426.                 console.log('showResult错误日志:', result);
  427.             }
  428.         }
  429.         
  430.         // 定义空的webjs函数,避免AIWROK内部调用时出现"is not a function"错误
  431.         function webjs() {
  432.             console.log('webjs函数被调用');
  433.         }
  434.         
  435.         // 定义临时的printl函数,避免页面加载时出现"is not defined"错误
  436.         // 主脚本.js加载后会自动覆盖这个定义
  437.         function printl(message) {
  438.             try {
  439.                 console.log('printl临时函数:', message);
  440.                 showResult(message);
  441.             } catch (e) {
  442.                 console.error('printl临时函数调用失败:', e.message);
  443.             }
  444.         }
  445.         
  446.         // AIWROK原生环境交互对象 - 主通信接口
  447.         window.at = window.at || {};
  448.         
  449.         // 初始化window.at对象的各种方法,确保与原生应用的交互能力
  450.         if (typeof window.at.callFunction === 'undefined') {
  451.             window.at.callFunction = function(functionName, params, callback) {
  452.                 console.log('调用原生函数:', functionName, params);
  453.                 showResult('调用原生函数: ' + functionName + ',参数: ' + JSON.stringify(params));
  454.                 if (typeof callback === 'function') {
  455.                     callback(JSON.stringify({result: '模拟返回结果', functionName: functionName}));
  456.                 }
  457.             };
  458.         }
  459.         
  460.         if (typeof window.at.runJs === 'undefined') {
  461.             window.at.runJs = function(jsCode, callback) {
  462.                 console.log('运行原生JS代码:', jsCode);
  463.                 showResult('运行原生JS代码: ' + jsCode.substring(0, 50) + (jsCode.length > 50 ? '...' : ''));
  464.                 if (typeof callback === 'function') {
  465.                     callback(JSON.stringify({result: 'JS代码执行成功', jsCode: jsCode}));
  466.                 }
  467.             };
  468.         }
  469.         
  470.         if (typeof window.at.setConfig === 'undefined') {
  471.             window.at.setConfig = function(key, value) {
  472.                 console.log('设置配置:', key, '=', value);
  473.                 showResult('设置配置: ' + key + ' = ' + value);
  474.                 try {
  475.                     localStorage.setItem(key, value);
  476.                     showToast('配置已设置');
  477.                 } catch (e) {
  478.                     console.warn('localStorage不可用:', e.message);
  479.                     if (!window._memoryStorage) {
  480.                         window._memoryStorage = {};
  481.                     }
  482.                     window._memoryStorage[key] = value;
  483.                     showToast('配置已记录');
  484.                 }
  485.             };
  486.         }
  487.         
  488.         if (typeof window.at.getConfig === 'undefined') {
  489.             window.at.getConfig = function(key, callback) {
  490.                 var value = '未设置';
  491.                 try {
  492.                     value = localStorage.getItem(key) || '未设置';
  493.                 } catch (e) {
  494.                     console.warn('localStorage不可用:', e.message);
  495.                     if (window._memoryStorage && window._memoryStorage[key] !== undefined) {
  496.                         value = window._memoryStorage[key];
  497.                     }
  498.                 }
  499.                
  500.                 showResult('获取配置: ' + key + ' = ' + value);
  501.                 if (typeof callback === 'function') {
  502.                     callback(value);
  503.                 }
  504.             };
  505.         }
  506.         
  507.         if (typeof window.at.publicSet === 'undefined') {
  508.             window.at.publicSet = function(key, value) {
  509.                 console.log('设置公共变量:', key, '=', value);
  510.                 showResult('设置公共变量: ' + key + ' = ' + value);
  511.                 window._publicData = window._publicData || {};
  512.                 window._publicData[key] = value;
  513.                 showToast('公共变量已设置');
  514.             };
  515.         }
  516.         
  517.         if (typeof window.at.publicGet === 'undefined') {
  518.             window.at.publicGet = function(key, callback) {
  519.                 var value = '未设置';
  520.                 window._publicData = window._publicData || {};
  521.                 if (window._publicData[key] !== undefined) {
  522.                     value = window._publicData[key];
  523.                 }
  524.                
  525.                 showResult('获取公共变量: ' + key + ' = ' + value);
  526.                 if (typeof callback === 'function') {
  527.                     callback(value);
  528.                 }
  529.             };
  530.         }
  531.         
  532.         if (typeof window.at.getRootPath === 'undefined') {
  533.             window.at.getRootPath = function(callback) {
  534.                 var path = '模拟根路径: /sdcard/AIWROK/';
  535.                 showResult('获取根路径: ' + path);
  536.                 if (typeof callback === 'function') {
  537.                     callback(path);
  538.                 }
  539.             };
  540.         }
  541.         
  542.         if (typeof window.at.getResourcesPath === 'undefined') {
  543.             window.at.getResourcesPath = function(callback) {
  544.                 var path = '模拟资源路径: /sdcard/AIWROK/resources/';
  545.                 showResult('获取资源路径: ' + path);
  546.                 if (typeof callback === 'function') {
  547.                     callback(path);
  548.                 }
  549.             };
  550.         }
  551.         
  552.         // 添加JsWebView类,支持new JsWebView().close()方式关闭界面
  553.         if (typeof JsWebView === 'undefined') {
  554.             function JsWebView() {
  555.                 // JsWebView构造函数
  556.             }
  557.             
  558.             JsWebView.prototype.close = function() {
  559.                 console.log('使用JsWebView.close()关闭界面');
  560.                 showToast('关闭界面');
  561.                
  562.                 try {
  563.                     // 调用原生的dismiss方法
  564.                     if (window.at && typeof window.at.callFunction === 'function') {
  565.                         window.at.callFunction('dismiss', {}, function(result) {
  566.                             console.log('关闭界面结果:', result);
  567.                         });
  568.                     }
  569.                     
  570.                     // 模拟关闭界面的视觉效果
  571.                     var mobileContainer = document.querySelector('.mobile-container');
  572.                     if (mobileContainer) {
  573.                         mobileContainer.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
  574.                         mobileContainer.style.opacity = '0';
  575.                         mobileContainer.style.transform = 'translateY(20px)';
  576.                         
  577.                         // 动画结束后隐藏元素
  578.                         setTimeout(function() {
  579.                             mobileContainer.style.display = 'none';
  580.                         }, 500);
  581.                     }
  582.                 } catch (e) {
  583.                     console.error('调用JsWebView.close()失败:', e.message);
  584.                 }
  585.             };
  586.         }
  587.         
  588.         // 模拟AIWROK原生环境的交互方法(兼容旧代码)
  589.         // 在实际环境中,这些方法由原生应用提供
  590.         if (typeof setConfig === 'undefined') {
  591.             function setConfig(key, value) {
  592.                 try {
  593.                     if (window.at && typeof window.at.setConfig === 'function') {
  594.                         // 先保存到本地存储作为备份
  595.                         try {
  596.                             localStorage.setItem(key, value);
  597.                         } catch (localStorageError) {
  598.                             console.warn('localStorage不可用:', localStorageError.message);
  599.                         }
  600.                         
  601.                         // 调用原生方法并处理可能的异常
  602.                         try {
  603.                             window.at.setConfig(key, value);
  604.                             showToast('配置设置成功');
  605.                         } catch (nativeError) {
  606.                             console.error('原生setConfig方法执行失败:', nativeError.message);
  607.                             showToast('配置已保存到本地');
  608.                         }
  609.                     } else {
  610.                         console.error('window.at.setConfig 方法不可用,使用本地存储');
  611.                         showToast('设置配置: ' + key + ' = ' + value);
  612.                         showResult('设置配置: ' + key + ' = ' + value);
  613.                         // 尝试使用本地存储作为备选
  614.                         try {
  615.                             localStorage.setItem(key, value);
  616.                         } catch (e) {
  617.                             console.warn('localStorage不可用:', e.message);
  618.                         }
  619.                     }
  620.                 } catch (e) {
  621.                     console.error('调用setConfig失败:', e.message);
  622.                     showToast('配置保存成功');
  623.                 }
  624.             }
  625.         }
  626.         
  627.         if (typeof getConfig === 'undefined') {
  628.             function getConfig(key, callback) {
  629.                 try {
  630.                     if (window.at && typeof window.at.getConfig === 'function') {
  631.                         window.at.getConfig(key, callback);
  632.                     } else {
  633.                         console.error('window.at.getConfig 方法不可用,使用本地存储');
  634.                         var value = '未设置';
  635.                         // 尝试从本地存储获取
  636.                         try {
  637.                             value = localStorage.getItem(key) || '未设置';
  638.                         } catch (e) {
  639.                             console.warn('localStorage不可用:', e.message);
  640.                         }
  641.                         showResult('获取配置: ' + key + ' = ' + value);
  642.                         if (typeof callback === 'function') {
  643.                             callback(value);
  644.                         }
  645.                     }
  646.                 } catch (e) {
  647.                     console.error('调用getConfig失败:', e.message);
  648.                     if (typeof callback === 'function') {
  649.                         callback('获取失败');
  650.                     }
  651.                 }
  652.             }
  653.         }

  654.         // 完全移除toast模拟,避免与原生toast对象冲突
  655.         // 统一使用showToast函数进行提示
  656.         
  657.         if (typeof printl === 'undefined') {
  658.             function printl(message) {
  659.                 try {
  660.                     console.log('原生日志:', message);
  661.                     // 尝试调用原生printl函数
  662.                     if (window.at && typeof window.at.callFunction === 'function') {
  663.                         window.at.callFunction('printl', {message: message});
  664.                     } else {
  665.                         console.error('window.at.callFunction 方法不可用,无法调用原生printl');
  666.                     }
  667.                     // 在H5页面上显示日志
  668.                     if (typeof showResult === 'function') {
  669.                         showResult(message);
  670.                     }
  671.                 } catch (e) {
  672.                     console.error('调用printl失败:', e.message);
  673.                     // 确保日志至少在控制台输出
  674.                     console.log('printl错误日志:', message);
  675.                 }
  676.             }
  677.         }
  678.         
  679.         if (typeof dismiss === 'undefined') {
  680.             function dismiss() {
  681.                 console.log('关闭界面');
  682.                 showToast('关闭界面操作');
  683.                 window.at.callFunction('dismiss', {}, function(result) {
  684.                     console.log('关闭界面结果:', result);
  685.                 });
  686.                
  687.                 // 模拟关闭界面的视觉效果
  688.                 var mobileContainer = document.querySelector('.mobile-container');
  689.                 if (mobileContainer) {
  690.                     mobileContainer.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
  691.                     mobileContainer.style.opacity = '0';
  692.                     mobileContainer.style.transform = 'translateY(20px)';
  693.                     
  694.                     // 动画结束后隐藏元素
  695.                     setTimeout(function() {
  696.                         mobileContainer.style.display = 'none';
  697.                     }, 500);
  698.                 }
  699.             }
  700.         }
  701.         
  702.         // 添加runJS函数,用于运行原生JS代码
  703.         if (typeof runJS === 'undefined') {
  704.             function runJS(func) {
  705.                 try {
  706.                     // 获取完整的函数代码字符串
  707.                     var jsCode = func.toString();
  708.                     
  709.                     // 显示执行状态
  710.                     showToast('正在执行脚本...');
  711.                     console.log('执行JS代码:', jsCode);
  712.                     
  713.                     if (window.at && typeof window.at.runJs === 'function') {
  714.                         // 调用原生方法,与h5Demo.html保持一致
  715.                         window.at.runJs(jsCode);
  716.                         showToast('脚本执行成功');
  717.                         showResult('已执行APP JS代码');
  718.                     } else {
  719.                         console.error('window.at.runJs 方法不可用,尝试直接执行');
  720.                         // 直接在本地执行函数
  721.                         func();
  722.                         showToast('脚本本地执行成功');
  723.                         showResult('脚本本地执行成功');
  724.                     }
  725.                 } catch (e) {
  726.                     console.error('调用runJS失败:', e.message);
  727.                     console.error('错误堆栈:', e.stack);
  728.                     showToast('脚本执行失败');
  729.                     showResult('脚本执行失败: ' + e.message);
  730.                 }
  731.             }
  732.         }
  733.         
  734.         // 添加runJSFile函数,用于运行原生JS文件
  735.         if (typeof runJSFile === 'undefined') {
  736.             function runJSFile(filePath) {
  737.                 try {
  738.                     if (window.at && typeof window.at.runJsFile === 'function') {
  739.                         window.at.runJsFile(filePath);
  740.                         showToast('运行JS文件成功');
  741.                         showResult('已执行APP JS文件: ' + filePath);
  742.                     } else {
  743.                         console.error('window.at.runJsFile 方法不可用,无法运行JS文件');
  744.                         showToast('运行JS文件失败: ' + filePath);
  745.                         showResult('运行JS文件失败: ' + filePath);
  746.                     }
  747.                 } catch (e) {
  748.                     console.error('调用runJSFile失败:', e.message);
  749.                     showToast('运行JS文件失败');
  750.                     showResult('运行JS文件失败: ' + e.message);
  751.                 }
  752.             }
  753.         }
  754.         
  755.         // 添加callAppMain函数,用于调用原生应用主函数
  756.         if (typeof callAppMain === 'undefined') {
  757.             function callAppMain(funcName, params, callback) {
  758.                 try {
  759.                     if (window.at && typeof window.at.callFunction === 'function') {
  760.                         // 调用原生方法并处理可能的异常
  761.                         try {
  762.                             window.at.callFunction(funcName, params, callback);
  763.                             showToast('调用成功');
  764.                         } catch (nativeError) {
  765.                             console.error('原生callFunction方法执行失败:', nativeError.message);
  766.                             showToast('功能已执行');
  767.                         }
  768.                     } else {
  769.                         console.error('window.at.callFunction 方法不可用,尝试本地处理');
  770.                         showToast('功能已执行');
  771.                         showResult('功能已在本地环境处理');
  772.                         if (typeof callback === 'function') {
  773.                             callback(JSON.stringify({result: '功能已处理', message: '本地环境执行'}));
  774.                         }
  775.                     }
  776.                 } catch (e) {
  777.                     console.error('调用callAppMain失败:', e.message);
  778.                     showToast('功能已执行');
  779.                     if (typeof callback === 'function') {
  780.                         callback(JSON.stringify({result: '功能已处理', message: '已忽略兼容性警告'}));
  781.                     }
  782.                 }
  783.             }
  784.         }
  785.         
  786.         // 添加runAppJs函数,用于运行原生JS代码
  787.         if (typeof runAppJs === 'undefined') {
  788.             function runAppJs() {
  789.                 try {
  790.                     window.at.runJs(function() {
  791.                         printl("H5触发APP执行JS代码");
  792.                         // 这里可以执行任何APP端的JS代码
  793.                     }.toString());
  794.                     showResult("已执行APP JS代码");
  795.                 } catch (e) {
  796.                     showResult("执行APP JS代码失败: " + e);
  797.                 }
  798.             }
  799.         }

  800.         // 自定义Toast提示
  801.         function showToast(message) {
  802.             var toast = document.getElementById('custom-toast');
  803.             if (!toast) {
  804.                 toast = document.createElement('div');
  805.                 toast.id = 'custom-toast';
  806.                 toast.style.cssText =
  807.                     'position: fixed;' +
  808.                     'top: 50%;' +
  809.                     'left: 50%;' +
  810.                     'transform: translate(-50%, -50%);' +
  811.                     'background: rgba(0, 0, 0, 0.7);' +
  812.                     'color: white;' +
  813.                     'padding: 12px 24px;' +
  814.                     'border-radius: 8px;' +
  815.                     'font-size: 14px;' +
  816.                     'z-index: 9999;' +
  817.                     'opacity: 0;' +
  818.                     'transition: opacity 0.3s ease, transform 0.3s ease;' +
  819.                     'transform: translate(-50%, -50%) scale(0.9);';
  820.                 document.body.appendChild(toast);
  821.             }
  822.             
  823.             if (toast.timer) {
  824.                 clearTimeout(toast.timer);
  825.             }
  826.             
  827.             toast.textContent = message;
  828.             toast.style.opacity = '1';
  829.             toast.style.transform = 'translate(-50%, -50%) scale(1)';
  830.             
  831.             toast.timer = setTimeout(function() {
  832.                 toast.style.opacity = '0';
  833.                 toast.style.transform = 'translate(-50%, -50%) scale(0.9)';
  834.             }, 2000);
  835.         }
  836.         
  837.         // 显示交互结果的函数已在页面顶部定义
  838.         
  839.         // 保存用户操作到配置
  840.         function saveUserAction(action, value) {
  841.             var timestamp = new Date().toISOString();
  842.             printl('保存用户操作:' + action + ' 时间戳:' + timestamp);
  843.             setConfig('last_' + action, timestamp);
  844.             if (value) {
  845.                 setConfig(action, value);
  846.             }
  847.         }
  848.         
  849.         // 添加按钮点击反馈
  850.         function addButtonFeedback() {
  851.             var buttons = document.querySelectorAll('.back-button, .run-button');
  852.             for (var i = 0; i < buttons.length; i++) {
  853.                 (function(button) {
  854.                     button.addEventListener('mousedown', function() {
  855.                         this.style.transform = 'scale(0.95)';
  856.                     });
  857.                     
  858.                     button.addEventListener('mouseup', function() {
  859.                         this.style.transform = 'scale(1)';
  860.                     });
  861.                     
  862.                     button.addEventListener('mouseleave', function() {
  863.                         this.style.transform = 'scale(1)';
  864.                     });
  865.                 })(buttons[i]);
  866.             }
  867.         }

  868.         // AIWROK标准的返回按钮点击处理
  869.         function handleBackButton() {
  870.             printl('返回按钮被点击');
  871.             saveUserAction('back_button_click');
  872.             

  873.             
  874.             // 如果当前是第一页,关闭界面
  875.             if (currentPageId === 1) {
  876.                 showToast('关闭界面');
  877.                 dismiss();
  878.             } else {
  879.                 // 从历史记录中移除当前页面
  880.                 pageHistory.pop();
  881.                 // 获取上一页的ID
  882.                 var previousPageId = pageHistory[pageHistory.length - 1];
  883.                
  884.                 // 隐藏所有页面
  885.                 var pages = document.querySelectorAll('.page');
  886.                 for (var i = 0; i < pages.length; i++) {
  887.                     pages[i].classList.remove('active');
  888.                 }
  889.                
  890.                 // 显示上一页
  891.                 var previousPage = document.getElementById('page' + previousPageId);
  892.                 if (previousPage) {
  893.                     previousPage.classList.add('active');
  894.                 }
  895.                
  896.                 // 更新导航栏状态
  897.                 var navItems = document.querySelectorAll('.top-nav-item');
  898.                 for (var j = 0; j < navItems.length; j++) {
  899.                     navItems[j].classList.remove('active');
  900.                 }
  901.                 navItems[previousPageId - 1].classList.add('active');
  902.                
  903.                 // 更新当前页面ID
  904.                 currentPageId = previousPageId;
  905.                
  906.                 showToast('返回上一页');
  907.                 printl('返回到页面: ' + previousPageId);
  908.             }
  909.         }

  910.         // AIWROK标准的运行按钮点击处理
  911.         function handleRunButton(button) {
  912.             // 如果按钮已经处于加载状态,不执行任何操作
  913.             if (button.classList.contains('loading')) {
  914.                 return;
  915.             }
  916.             
  917.             printl('运行按钮被点击');
  918.             saveUserAction('run_button_click');
  919.             
  920.             // 添加加载状态
  921.             button.classList.add('loading');
  922.             button.disabled = true;
  923.             
  924.             showToast('开始执行任务');
  925.             

  926.             
  927.             // 根据当前页面执行对应的脚本
  928.             var selectedItems = [];
  929.             
  930.             // 获取当前页面的下拉选择框
  931.             var currentPage = document.getElementById('page' + currentPageId);
  932.             var selectBox = currentPage.querySelector('select');
  933.             
  934.             // 检查是否有选中的值
  935.             if (selectBox && selectBox.value) {
  936.                 var itemId = selectBox.value;
  937.                 var label = selectBox.options[selectBox.selectedIndex].text;
  938.                
  939.                 printl('执行脚本: ' + label);
  940.                 selectedItems.push(label);
  941.                
  942.                 // 根据不同页面和选择项执行不同的函数
  943.                 if (currentPageId === 1) {
  944.                     // 第一页脚本
  945.                     switch (itemId) {
  946.                         case 'item1': runJS(function() { 抖音极速(); }); break;
  947.                         case 'item2': runJS(function() { 快手极速(); }); break;
  948.                         case 'item3': runJS(function() { 汽水音乐(); }); break;
  949.                         case 'item4': runJS(function() { 番茄畅听音乐(); }); break;
  950.                         case 'item5': runJS(function() { 西瓜视频(); }); break;
  951.                         case 'item6': runJS(function() { 番茄畅听(); }); break;
  952.                         case 'item7': runJS(function() { 番茄小说(); }); break;
  953.                         case 'item8': runJS(function() { 悟空浏览器(); }); break;
  954.                         case 'item9': runJS(function() { 红果短剧(); }); break;
  955.                         case 'item10': runJS(function() { 头条广告单版(); }); break;
  956.                         case 'item11': runJS(function() { 头条极速广告单版(); }); break;
  957.                         case 'item12': runJS(function() { 喜番短剧(); }); break;
  958.                         case 'item13': runJS(function() { 快手正式(); }); break;
  959.                         case 'item14': runJS(function() { 苹果删除APP(); }); break;
  960.                         case 'item15': runJS(function() { 测试函数2(); printl('测试2脚本已启动'); }); break;
  961.                     }
  962.                 } else if (currentPageId === 2) {
  963.                     // 第二页脚本
  964.                     switch (itemId) {
  965.                         case 'item21': runJS(function() { 喜番快手正式快手极速(); printl('喜番极速快手正式快手混跑脚本已启动'); }); break;
  966.                         case 'item22': runJS(function() { 抖音极速西瓜汽水(); printl('极速抖音混跑脚本已启动'); }); break;
  967.                         case 'item23': runJS(function() { 红果悟空番茄畅听音乐(); printl('红果混跑脚本已启动'); }); break;
  968.                         case 'item24': runJS(function() { 番茄小说番茄畅听(); printl('番茄小说混跑脚本已启动'); }); break;
  969.                         case 'item25': runJS(function() { 抖音极速西瓜汽水新手(); printl('西瓜视频脚本已启动'); }); break;
  970.                         case 'item26': runJS(function() { 红果悟空番茄畅听音乐新手(); printl('番茄畅听脚本已启动'); }); break;
  971.                         case 'item27': runJS(function() { 番茄小说番茄畅听新手(); printl('番茄小说脚本已启动'); }); break;
  972.                         case 'item28': runJS(function() { 喜番快手正式快手极速新手模式(); printl('喜番快手正式快手极速新手模式已启动'); }); break;
  973.                         case 'item29': runJS(function() { 喜番快手正式快手极速周期(); }); break;
  974.                         case 'item30': runJS(function() { 抖音系周期做任务(); }); break;
  975.                         case 'item31': runJS(function() { 抖音系周期养号(); }); break;
  976.                     }
  977.                 } else if (currentPageId === 3) {
  978.                     // 第三页脚本
  979.                     switch (itemId) {
  980.                         case 'item41': runJS(function() { 抖音系周期养号(); printl('抖音系周期养号脚本已启动'); }); break;
  981.                         case 'item42': runJS(function() { 抖音系周期做任务(); printl('抖音系周期任务脚本已启动'); }); break;
  982.                         case 'item43': runJS(function() { 喜番快手正式快手极速周期(); printl('喜番快手正式快手极速周期脚本已启动'); }); break;
  983.                         case 'item44': runJS(function() { 抖音系新手模式(); printl('抖音系新手模式脚本已启动'); }); break;
  984.                         case 'item45': runJS(function() { 快手系新手模式(); printl('快手系新手模式脚本已启动'); }); break;
  985.                         case 'item46': runJS(function() { 番茄小说番茄畅听新手(); printl('番茄小说番茄畅听新手模式脚本已启动'); }); break;
  986.                         case 'item47': runJS(function() { 红果悟空番茄畅听音乐新手(); printl('红果悟空番茄畅听音乐新手模式脚本已启动'); }); break;
  987.                         case 'item48': runJS(function() { 抖音极速西瓜汽水新手(); printl('抖音极速西瓜汽水新手模式脚本已启动'); }); break;
  988.                         case 'item49': runJS(function() { 快手系新手模式(); printl('快手系新手模式脚本已启动'); }); break;
  989.                         case 'item50': runJS(function() { 番茄小说番茄畅听(); printl('番茄小说番茄畅听音乐脚本已启动'); }); break;
  990.                         case 'item51': runJS(function() { 抖音极速西瓜汽水(); printl('抖音极速西瓜汽水脚本已启动'); }); break;
  991.                         case 'item52': runJS(function() { 喜番快手正式快手极速(); printl('喜番快手正式快手极速脚本已启动'); }); break;
  992.                     }
  993.                 } else if (currentPageId === 4) {
  994.                     // 第四页备用脚本
  995.                     switch (itemId) {
  996.                         case 'item61': runJS(function() { 备用任务1(); printl('备用任务1脚本已启动'); }); break;
  997.                         case 'item62': runJS(function() { 备用任务2(); printl('备用任务2脚本已启动'); }); break;
  998.                         case 'item63': runJS(function() { 备用任务3(); printl('备用任务3脚本已启动'); }); break;
  999.                         case 'item64': runJS(function() { 备用任务4(); printl('备用任务4脚本已启动'); }); break;
  1000.                         case 'item65': runJS(function() { 备用任务5(); printl('备用任务5脚本已启动'); }); break;
  1001.                         case 'item66': runJS(function() { 备用任务6(); printl('备用任务6脚本已启动'); }); break;
  1002.                         case 'item67': runJS(function() { 备用任务7(); printl('备用任务7脚本已启动'); }); break;
  1003.                         case 'item68': runJS(function() { 备用任务8(); printl('备用任务8脚本已启动'); }); break;
  1004.                         case 'item69': runJS(function() { 备用任务9(); printl('备用任务9脚本已启动'); }); break;
  1005.                         case 'item70': runJS(function() { 备用任务10(); printl('备用任务10脚本已启动'); }); break;
  1006.                     }
  1007.                 }
  1008.             }
  1009.             
  1010.             // 如果没有选中任何任务
  1011.             if (selectedItems.length === 0) {
  1012.                 showToast('请先选择要执行的任务');
  1013.             }
  1014.             
  1015.             // 模拟任务执行过程
  1016.             setTimeout(function() {
  1017.                 // 移除加载状态
  1018.                 button.classList.remove('loading');
  1019.                 button.disabled = false;
  1020.                
  1021.                 // 显示执行完成提示
  1022.                 if (selectedItems.length > 0) {
  1023.                     showToast('任务执行完成');
  1024.                     
  1025.                     // 添加返回桌面功能,但保持H5界面打开以继续运行脚本
  1026.                     try {
  1027.                         window.at.runJs(function() {
  1028.                             printl("H5触发APP返回桌面");
  1029.                             auto.home(); // 返回桌面
  1030.                         }.toString());
  1031.                         showResult("已触发APP返回桌面");
  1032.                     } catch (e) {
  1033.                         showResult("返回桌面失败: " + e);
  1034.                     }
  1035.                 }
  1036.             }, 2000);
  1037.         }



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

  1041.         // AIWROK标准的选择框变化处理
  1042.         function handleSelectChange(select) {
  1043.             var selectedValue = select.value;
  1044.             var selectedText = select.options[select.selectedIndex].text;
  1045.             
  1046.             if (selectedValue) {
  1047.                 printl('选中: ' + selectedText);
  1048.                 saveUserAction('select_' + select.id, selectedValue);
  1049.             } else {
  1050.                 printl('未选择任何任务');
  1051.                 saveUserAction('select_' + select.id, '');
  1052.             }
  1053.         }

  1054.         // 保持兼容旧的复选框变化处理函数
  1055.         function handleCheckboxChange(checkbox) {
  1056.             try {
  1057.                 var label = checkbox.nextElementSibling;
  1058.                 if (checkbox.checked) {
  1059.                     label.style.color = '#d32f2f';
  1060.                     label.style.fontWeight = '600';
  1061.                     printl('选中: ' + label.textContent);
  1062.                     saveUserAction('checkbox_' + checkbox.id, 'checked');
  1063.                 } else {
  1064.                     label.style.color = '#333';
  1065.                     label.style.fontWeight = 'normal';
  1066.                     printl('取消选中: ' + label.textContent);
  1067.                     saveUserAction('checkbox_' + checkbox.id, 'unchecked');
  1068.                 }
  1069.             } catch (e) {
  1070.                 console.error('handleCheckboxChange错误:', e.message);
  1071.             }
  1072.         }

  1073.         // 页面切换函数
  1074.         function switchPage(pageId) {
  1075.             // 如果是当前页面,不进行切换
  1076.             if (currentPageId === pageId) {
  1077.                 return;
  1078.             }

  1079.             // 隐藏所有页面
  1080.             var pages = document.querySelectorAll('.page');
  1081.             for (var i = 0; i < pages.length; i++) {
  1082.                 pages[i].classList.remove('active');
  1083.             }

  1084.             // 显示选中的页面
  1085.             var selectedPage = document.getElementById('page' + pageId);
  1086.             if (selectedPage) {
  1087.                 selectedPage.classList.add('active');
  1088.             }

  1089.             // 更新导航栏状态
  1090.             var navItems = document.querySelectorAll('.top-nav-item');
  1091.             for (var j = 0; j < navItems.length; j++) {
  1092.                 navItems[j].classList.remove('active');
  1093.             }
  1094.             navItems[pageId - 1].classList.add('active');

  1095.             // 记录页面历史
  1096.             pageHistory.push(pageId);
  1097.             currentPageId = pageId;

  1098.             printl('切换到页面: ' + pageId);
  1099.         }

  1100.         // 页面加载完成后初始化
  1101.         window.onload = function() {
  1102.             printl('页面加载完成');
  1103.             
  1104.             // 执行APP JS文件,与h5Demo.html保持一致
  1105.             if (window.at && typeof window.at.runJsFile === 'function') {
  1106.                 window.at.runJsFile("主脚本.js");
  1107.                 printl('已执行APP JS文件: 主脚本.js');
  1108.             } else {
  1109.                 printl('runJsFile方法不可用,尝试使用script标签加载');
  1110.                 // 使用script标签加载主脚本
  1111.                 var scriptTag = document.createElement('script');
  1112.                 scriptTag.src = '主脚本.js';
  1113.                 scriptTag.onload = function() {
  1114.                     printl('主脚本.js已通过script标签加载完成');
  1115.                 };
  1116.                 scriptTag.onerror = function() {
  1117.                     printl('主脚本.js加载失败');
  1118.                 };
  1119.                 document.body.appendChild(scriptTag);
  1120.             }
  1121.             
  1122.             // 为导航栏添加点击事件
  1123.             var navItems = document.querySelectorAll('.top-nav-item');
  1124.             for (var i = 0; i < navItems.length; i++) {
  1125.                 (function(index) {
  1126.                     navItems[index].addEventListener('click', function(e) {
  1127.                         e.preventDefault();
  1128.                         switchPage(index + 1);
  1129.                     });
  1130.                 })(i);
  1131.             }
  1132.             
  1133.             // 添加按钮点击反馈
  1134.             addButtonFeedback();
  1135.             
  1136.             printl('初始化完成,所有交互功能已就绪');
  1137.         };
  1138.     </script>
  1139. </body>
  1140. </html>
复制代码



untoH5里CheckBox控件演示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三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖