<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JavaScript常用小技巧

      1、獲取地址欄參數(shù) URL URLSearchParams

      const url = new URL("https://www.baidu.com?_t=123&search=今天&n=1&limit=10");
      
      const params =new URLSearchParams(url.search);
      // 或 const params =new URLSearchParams(window.location.search);
      console.log('_t:',params.get('_t'))
      console.log('search:',params.get('search'))
      console.log('n:',params.get('n'))
      console.log('limit:',params.get('limit'))
      
      // 輸出結(jié)果
      // _t: 123
      // search: 今天
      // n: 1
      // limit: 10

      2、獲取地址欄參數(shù),并且轉(zhuǎn) JSON 格式 Object.fromEntries

      // 轉(zhuǎn) JSON 格式
      const parse = (queryString) => {
          return Object.fromEntries(new URLSearchParams(queryString));
      };
      
      console.log(parse(url.search))
      
      // 輸出
      {_t: '123', search: '今天', n: '1', limit: '10'}
      
      // 第二種
      const getURLParameters = url =>
        (url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(
          (a, v) => (
            (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a
          ),
          {}
        );
      
      getURLParameters('google.com'); // {}
      getURLParameters('http://url.com/page?name=Adam&surname=Smith');
      // {name: 'Adam', surname: 'Smith'}

       3、使用 fetch 發(fā)起一個 get 請求 并且攜帶參數(shù)

      const fetchTianQi = ({ page, size, location }) => {
          return fetch(
              `https://v-api.2345.com/shortVideo/api/GetListByLocation?${new URLSearchParams({
                  page,
                  size,
                  location,
              })}`
          );
      };
      // 可以這樣
      const fetchTianQi = (data) => {
          return fetch(
              `https://v-api.2345.com/shortVideo/api/GetListByLocation?${new URLSearchParams(data)}`
          );
      };
      
      await fetchTianQi({
          page: 1,
          size: 100,
          location: 'tianqihome-shortMovie',
      });
      
      // 輸出
      Response {type: 'cors', url: 'https://v-api.2345.com/shortVideo/api/GetListByLoc…on?page=1&size=100&location=tianqihome-shortMovie', redirected: false, status: 200, ok: true, …}

       4、獲取鼠標(biāo)位置

      document.addEventListener('mousemove', (e) => {
          console.log(`Mouse X: ${e.clientX}, Mouse Y: ${e.clientY}`);
      });

      5、拷貝內(nèi)容到剪切板 navigator.clipboard.writeText

      const copyToClipboardAsync = str => {
          if (navigator && navigator.clipboard && navigator.clipboard.writeText)
              return navigator.clipboard.writeText(str);
          return Promise.reject('剪貼板API不可用。');
      };
      // 示例
      copyToClipboardAsync('你一定可以的');
      // 第二種實現(xiàn)
      const  copyToClipboard  = text => {
              var input = document.createElement("textarea");
              input.value = text;
              document.body.appendChild(input);
              input.select();
              document.execCommand("copy");
              document.body.removeChild(input);
       }
      copyToClipboard('你一定可以的');

      6、滾動到頁面頂部 window.scrollTo

      const scrollToTop = () => {
        window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
      };

       7、滾動到頁面底部

      const scrollToBottom = () => {
        window.scrollTo({
          top: document.documentElement.offsetHeight,
          left: 0,
          behavior: "smooth",
        });
      };

      8、判斷當(dāng)前設(shè)備是 Android 還是 iOS

      const isAndroid = () =>/android/i.test(navigator.userAgent.toLowerCase());
      
      const isIOS = () => /iPhone|iPad|iPod|iOS|Macintosh/i.test(navigator.userAgent.toLowerCase());

       9、移除 dom 監(jiān)聽事件

      const off = (el, evt, fn, opts = false) =>{
       el.removeEventListener(evt, fn, opts);
      }
      // 示例
      const fn = () => console.log('!');
      document.body.addEventListener('click', fn);
      off(document.body, 'click', fn);

       10、批量添加 dom 事件

      const addMultipleListeners = (el, types, listener, options, useCapture) => {
        types.forEach(type =>
          el.addEventListener(type, listener, options, useCapture)
        );
      };
      // 批量添加事件
      addMultipleListeners(
        document.querySelector('.my-element'),
        ['click', 'mousedown'],
        () => { console.log('hello!') }
      );

       11、dom 事件只執(zhí)行一次 addEventListener

      const listenOnce = (el, evt, fn) =>{
        el.addEventListener(evt, fn, { once: true });
      }

      12、地址欄參數(shù)拼接

      const query = "Where's Wald??";
      const locale = "en-US";
      const campaign = "promo_email";
      
      // Good
      const url = new URL('https://examp.le');
      
      url.searchParams.set('q', query);
      url.searchParams.set('lang', locale);
      url.searchParams.set('from', campaign);
      
      url.toString();
      // 'https://examp.le/?q=Where%27s+Wald%C3%B8%3F&lang=en-US&from=promo_email'

       

      posted @ 2023-03-17 16:19  天葬  閱讀(32)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 邻居少妇张开腿让我爽了一夜 | 亚洲av激情久久精品人| 日韩精品无码一区二区视频| 久热在线中文字幕色999舞| 青青草成人免费自拍视频| 国产精品亚洲综合网一区| 久久AV中文综合一区二区| 国产极品美女高潮无套| 狠狠躁天天躁中文字幕无码 | 超碰伊人久久大香线蕉综合| 亚洲熟妇自偷自拍另欧美| 国产漂亮白嫩美女在线观看 | 国产一区二区三区尤物视频| 亚洲最大有声小说AV网| 最新亚洲av日韩av二区| 国内精品免费久久久久电影院97| 亚洲人成网网址在线看| 蜜桃av色偷偷av老熟女| 麻豆久久天天躁夜夜狠狠躁| 日韩精品国产精品十八禁| 五月天丁香婷婷亚洲欧洲国产| 国产人妻人伦精品婷婷| 四虎成人精品在永久免费| 久久精品免费观看国产| 公喝错春药让我高潮| 久久香蕉欧美精品| 亚洲AV日韩AV高清在线观看| 亚洲精品一区二区动漫| 亚洲熟妇少妇任你躁在线观看无码| 中文字幕国产精品自拍| 国产精品久久久久久人妻精品动漫| 亚洲悠悠色综合中文字幕| 美乳丰满人妻无码视频| 国产乱码精品一品二品| 国产又色又爽又高潮免费| 免费人成网站免费看视频| 成人动漫综合网| 国产极品嫩模在线观看91| 欧美福利电影A在线播放| 国产色悠悠视频在线观看| 亚洲天堂伊人久久a成人|