上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12
返回列表 发新帖
楼主: egg2022 - 

小白请教,油猴自动点击功能

[复制链接]
  • TA的每日心情
    开心
    2024-7-27 20:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    16

    回帖

    11

    积分

    荣誉开发者

    积分
    11

    荣誉开发者油中3周年油中2周年

    发表于 2024-5-7 02:42:32 | 显示全部楼层
    這個是前後台相呼應的版本~但是你只要在前台設置好~~這個後台可以每一個來自前台的請求~為的就是給前台最快速最準確的執行環境~前台只要專注於執行腳本的功能~特別是有設置多種異步函數的前台腳本~因為為了避免阻礙線程~通常都是要等頁面加載完畢後~才會開始取回函數~錯誤解析~錯誤處理~套用~~~這要一段時間~而假如我們把\這個任務交給後台處理~頁面開始加載的時候~~~後台收到來自前台的指令後~就會開始執行~為了確保準性~我做了一些比較特殊方式....這個以後再教你~~~~因為那是跨領域的~~腳本貓後台允許使用者自定義~所以很方便~以下是前後台相呼應~~

    // 下面是你必須加入前台腳本的的部分

    // 全局變量:首先,我們需要一個全局變量來記錄我們是否已經發送了請求,以及請求的細節是什麼。
    // 這就像是一個記錄本,我們可以隨時查看和更新它。

    // 這是一個全局變量,用來記錄請求的狀態
    var globalRequestState = {
        isRequesting: false, // 這告訴我們是否有請求正在進行
        requestDetails: null // 這裡會存儲請求的細節
    };

    // 發送請求:接下來,我們需要一個函數來發送請求。當我們調用這個函數時,它會更新全局變量並向後台發送一個消息。
    // 這個函數用來發送請求
    function sendRequest(details) {
        globalRequestState.isRequesting = true; // 標記我們正在發送請求
        globalRequestState.requestDetails = details; // 記錄請求的細節
        window.postMessage({ type: 'supportRequest', details: details }, '*'); // 向後台發送請求
    }

    //接收回應:我們還需要設置一個監聽器來接收後台的回應。當後台處理完我們的請求並回應時,這個監聽器會被觸發。

    // 設置一個監聽器來接收後台的回應
    window.addEventListener('message', function(event) {
        if (event.origin !== '您後台腳本的來源') return; // 確保回應來自我們信任的後台

        if (event.data.type === 'supportResponse') {
            console.log('後台支援回應:', event.data.result); // 在控制台顯示後台的回應
            globalRequestState.isRequesting = false; // 更新全局變量,表示請求已經完成
            globalRequestState.requestDetails = null; // 清空請求細節
        }
    }, { once: true }); // 這個監聽器只會執行一次。
    //自動化流程:最後,我們希望這個過程能夠自動化。這意味著每當頁面加載時,我們的腳本會自動檢查是否需要發送請求,並執行相應的操作

    // 當頁面加載完成時,這個函數會被自動調用
    window.addEventListener('DOMContentLoaded', (event) => {
        console.log('頁面加載完成');
        if (!globalRequestState.isRequesting) { // 如果沒有請求正在進行
            sendRequest('需要的支援細節'); // 發送一個新的請求
        }
    });

    // 這樣,當您的頁面加載或重新加載時,腳本會自動檢查是否需要發送請求,並根據需要執行。
    // 這就是自動化的過程,您不需要手動做任何事情,腳本會為您處理一切。


    // @background
    // @match        *://*/*
    // @grant        none
    // ==/UserScript==

    // 此函數用於在網頁上下文中執行JavaScript代碼。
    function contentEval(source) {
      // 如果源代碼是函數,將其轉換為立即執行函數表達式(IIFE)
      if (typeof source === 'function') {
        source = `(${source})();`;
      }
      // 創建一個script元素並將源代碼設置為其內容
      const script = document.createElement('script');
      script.setAttribute('type', 'application/javascript');
      script.textContent = source;
      // 將script元素添加到文檔中,然後立即移除,以執行源代碼
      document.body.appendChild(script);
      document.body.removeChild(script);
    }

    // 此函數根據URL路徑識別廣播者信息,用於頁面定位和操作。
    function getBroadcaster() {
      // 分割URL路徑
      const pathArray = window.location.pathname.split('/');
      // 檢查路徑格式並返回廣播者名稱
      if (pathArray.length === 3 && pathArray[0] === '' && pathArray[1] !== '' && pathArray[2] === '') {
        return pathArray[1];
      } else if (pathArray.length === 4 && pathArray[0] === '' && pathArray[1] === 'b' && pathArray[2] !== '' && pathArray[3] === '') {
        return pathArray[2];
      }
      return null;
    }

    // 監聽前台腳本發送的消息。
    window.addEventListener('message', async (event) => {
      // 確保回應來自我們信任的來源
      if (event.origin !== '您後台腳本的來源') return;

      // 處理ping請求
      if (event.data.type === 'pingRequest') {
        // 使用fetch API發送網絡請求
        fetch(event.data.url).then(response => response.text()).then(result => {
          // 將結果發送回前台腳本
          event.source.postMessage({ type: 'pingResponse', result: result }, event.origin);
        }).catch(error => {
          // 處理錯誤並發送糾正後的數據
          const correctedData = `根據錯誤信息糾正的數據: ${error.message}`;
          event.source.postMessage({ type: 'correctedDataResponse', result: correctedData }, event.origin);
        });
      }
    });

    // 全局錯誤狀態追蹤變量
    let globalErrorStatus = {
      hasError: false, // 是否有錯誤發生
      errorMessage: '' // 錯誤信息
    };
    回复
    订阅

    使用道具 举报

    12
    返回列表 发新帖

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表