anonymous No title
JavaScript
window.alert('does it freeze?');
anonymous No title
JavaScript
alert('does it freeze?');
anonymous No title
JavaScript
alert('does it freeze?');
anonymous No title
JavaScript
(function(){

var data = {
"resource": {
  "version":"5",
  
  "macros":[{
      "function":"__e"
    },{
      "function":"__dee"
    }],
  "tags":[{
      "function":"__asprv",
      "vtp_globalName":"google_optimize",
      "vtp_listenForMutations":false,
      "tag_id":6
    },{
      "function":"__asprv",
      "tag_id":7
    }],
  "predicates":[{
      "function":"_eq",
      "arg0":["macro",0],
      "arg1":["macro",1]
    },{
      "function":"_eq",
      "arg0":["macro",0],
      "arg1":"optimize.callback"
    }],
  "rules":[
    [["if",0],["add",0]],
    [["if",1],["add",1]]]
},
"runtime":[]
};
anonymous クロスマーケット2のワールドをマイリストへ一括登録するブックマークレットです。
Mozilla Public v 2.0 JavaScript
javascript:
/**
 * @file クロスマーケット2のワールドをマイリストへ一括登録するブックマークレットです。
 * 登録完了まで数秒ほどかかり、完了したことを通知するダイアログが表示されます。
 * @version 1.0.0
 * @license MPL-2.0
 * @author 100の人
 * @see {@link https://twitter.com/esperecyan}
 */

(async function () {
'use strict';

/**
 * 何番目のマイリストへ登録するかを 1 〜 4 で指定。
 * @constant {number}
 */
const NUMBER = 4;

/**
 * 登録するワールドID。
 * @constant {string[]}
 */
const WORLD_IDS = [
	'wrld_3aaf1c48-05bf-4765-a100-8315b1c11ca4',
	'wrld_54396534-69ad-4b1f-b9e2-48debe2025f1',
	'wrld_00dc34ea-ffe3-483a-98a6-2f364d160432',
	'wrld_eb1e11d2-28d2-468b-b913-be84f311225a',
	'wrld_b64f814d-afe5-493d-8030-7e24435027c7',
	'wrld_1a32bc38-ecf5-43c8-bd87-0cbe85ab3127',
	'wrld_c187fd45-a9a5-44c8-87d2-8bc83389b8f8',
	'wrld_f1061d17-ac82-4fce-b205-e71df5a1e3e8',
	'wrld_abb15d41-df9a-4bd7-9292-f1f95572b9c2',
	'wrld_18d313cf-2e96-45fb-84a6-c6954d7063af',
	'wrld_89f83bfb-5651-451d-81c6-dd691d630fb7',
	'wrld_f02d9269-200c-4b2f-9d2f-bc1eb361cbd9',
	'wrld_c78bd309-b349-4e49-b1e4-33d8f006e517',
];

/**
 * マイリストのグループ名。インデックス順。
 * @constant {string[]}
 */
const MYLIST_NAMES = ['worlds0', 'worlds2', 'worlds3', 'worlds4'];

/**
 * 一つのブックマークグループの最大登録数。
 * @constant {number}
 */
const MAX_FAVORITES_COUNT_PER_GROUP = 32;

/**
 * 一度に取得できる最大の要素数。
 * @constant {number}
 */
const MAX_ITEMS_COUNT = 100;

/**
 * JSONファイルをオブジェクトとして取得します。
 * @param {RequestInfo} url
 * @param {RequestInit}
 * @returns {Promise.<(Object|Array)>} OKステータスでなければ失敗します。
 */
async function fetchJSON(input, requestInit = {credentials: 'same-origin'})
{
	const response = await fetch(input, requestInit);
	return response.ok
		? response.json()
		: Promise.reject(new Error(`${response.status}  ${response.statusText}\n${await response.text()}`));
}

/**
 * マイリストを全件取得します。
 * @see [List Favorites — VRChat API Documentation]{@link https://vrchatapi.github.io/#/FavoritesAPI/ListAllFavorites}
 * @returns {Promise.<(string|string[])>} ワールドID一覧の配列の、マイリスト順の配列。
 */
async function fetchMylistIndexWorldIdsPairs()
{
	const mylistIndexWorldIdsPairs = [[], [], [], []];
	let offset = 0;
	while (true) {
		const favorites = await fetchJSON(`/api/1/favorites/?type=world&n=${MAX_ITEMS_COUNT}&offset=${offset}`);

		for (const favorite of favorites) {
			mylistIndexWorldIdsPairs[MYLIST_NAMES.indexOf(favorite.tags[0])].push(favorite);
		}

		if (favorites.length < MAX_ITEMS_COUNT) {
			break;
		}

		offset += favorites.length;
	}
	return mylistIndexWorldIdsPairs;
}

/**
 * マイリストへワールドを追加します。
 * @see [Add Favorite — VRChat API Documentation]{@link https://vrchatapi.github.io/#/FavoritesAPI/AddFavorite}
 * @param {number} mylistIndex - 何番目のマイリストへ追加するか、0から始まるインデックス。
 * @param {string} worldId
 * @returns {Promise.<void>}
 */
async function addWorldToMylist(mylistIndex, worldId)
{
	await fetch('/api/1/favorites', {
		method: 'POST',
		headers: { 'content-type': 'application/json' },
		credentials: 'same-origin',
		body: JSON.stringify({ type: 'world', favoriteId: worldId, tags: [ MYLIST_NAMES[mylistIndex] ] }),
	});
}

const mylistIndexWorldIdsPairs = await fetchMylistIndexWorldIdsPairs();
const mylistWorldIds = mylistIndexWorldIdsPairs.flat();

const worldIds = WORLD_IDS.filter(id => !mylistWorldIds.includes(id));
if (worldIds.length > MAX_FAVORITES_COUNT_PER_GROUP - mylistIndexWorldIdsPairs[NUMBER - 1].length) {
	alert(`${NUMBER}番目のマイリストには空きが不足しています。`);
	return;
}

for (const worldId of worldIds.reverse()) {
	await addWorldToMylist(NUMBER - 1, worldId);
}

alert(`${NUMBER}番目のマイリストへの登録が完了しました。`);

})().catch(function (exception) {
	console.error(exception);
	alert('エラーが発生しました: ' + exception + ('stack' in exception ? '\n\n' + exception.stack : ''));
});
anonymous No title
JavaScript
import $ from 'jquery'
import 'slick-carousel';
import router from './modules/Router'
import "slick-carousel/slick/slick.scss";
import "slick-carousel/slick/slick.min.js";
import '../scss/app.scss'
import item_data from './item_data.js'
import './jquery.elevatezoom.js';

$(() => {
  const page_type = $('.contents').attr('id'),
    categorys = ['men', 'woman', 'kids'],
    param_key = location.search.substring(1).split('=')[0],
    param_value = location.search.substring(1).split('=')[1];

  let more_count = {
    'brand': 3,
    'items': 10
  };

  // オブジェクトをhtmlに変換する
  // 返り値: html
  function createDom(items, delete_btn_flg = null) {
    const imgPath = "/assets/images/";

    let html_template = '';
    let delete_dom = '';

    if (delete_btn_flg) {
      delete_dom = `<div class="cart-delete"><img src="${imgPath}/icon_delete.svg"></div>`;
    }

    /*
      仮に「delete_btn_flg = false」だと、
      他でcreateDomする時に毎回毎回、第2実引数にfalseをとらなくてはいけない。
     */
    items.forEach(function (item, index) {
      html_template +=
        `<li class="c-blockList__item" data-item-id="${item.id}">
          <a href="/detail/index.html?id=${item.id}">
            <div class="c-blockList__item__cap">
              <img src="${imgPath}/item/${item.id}.png" alt="new item" loading="lazy">
            </div>
            <ul class="c-blockList__item__txtList">
              <li class="c-blockList__item__txtList__item">
                <p class="c-blockList__item__txtList__item__product">${item.name}</p>
                <p class="c-blockList__item__txtList__item__detail">${item.text}</p>
                <p class="c-blockList__item__txtList__item__price">¥${item.price}</p>
              </li>
            </ul>
          </a>
          ${delete_dom}
        </li>
      `;
    });

    return html_template;
  }

  // 関数 もっと見るボタン
  function moreControl(el, num) {
    const more_type = $(el).attr('data-more-btn'),
      target_list = $(`[data-more-list="${more_type}"]`),
      max_count = target_list.find('li').length;

    more_count[more_type] += num;

    target_list.find(`li:lt(${more_count[more_type]})`).fadeIn();

    if (more_count[more_type] >= max_count) {
      $(el).hide();
    }
  }

  function searchWordShow() {
    let result_text;

    if (param_key == 'price') {
      result_text = `〜${param_value}円`;
      $(`jsi-price-select option[value="${param_value}"]`).prop('selected', true);
    } else {
      result_text = param_value;
    }

    $('.jsc-elem-add').text(decodeURI(result_text));
  }

  function getItemSingle() {
    return item_data.find(function (item) {
      return item['id'] == param_value;
    })
  }

  // item_dataのnewプロパティの真偽値を判定する
  // 返り値: items
  function getItemList(key, value = null) { // valueはなくてもいいけど、あったら使うよ!という意味
    const search_value = value ? value : param_value, // パラメーターがあるかどうか
      freeWords = ['name', 'text'];

    const items = item_data.filter(function (item, index) {
      switch (key) {
        case 'brand':
        case 'category':
          return item[key] == search_value
          break;
        case 'freeWord':
          return freeWords.find(function (freeWord) {
            return item[freeWord].indexOf(decodeURI(param_value)) !== -1;
          });
          break;
        case 'price':
          return item[key] <= search_value
          break;
        case 'new':
          return item.new
          break;
      }
    });
    searchWordShow();

    return items;
  }

  function pickUpShuffle(item_data) {
    let items = [],
      rand_check = []; // 重複があるかどうかを確認する用

    for (let i = 0; i < 6; i++) {
      let j = Math.floor(Math.random() * item_data.length);

      if (rand_check.indexOf(j) !== -1) {
        i--; // 値が被ると与えられる要素が3つとか4つになっちゃう。それを防ぐため! 絶対に重複がない
        continue;
      } else {
        rand_check.push(j);
        items.push(item_data[j]);
      }
    }
    return items;
  }

  function storageControl(id) {
    let strage_data = JSON.parse(localStorage.getItem('ninco_cart'));
    id = Number(id);

    if (strage_data == null) {
      strage_data = [id]; // 配列として入れる
    } else { // データが1つ以上ある時
      if (strage_data.indexOf(id) !== -1) { // 同じものが入っていた場合
        strage_data.splice(strage_data.indexOf(id), 1); // 消去する
      } else {
        strage_data.push(id);
      }
    }

    localStorage.setItem('ninco_cart', JSON.stringify(strage_data));
  }

  function storageSaveJudge(id) {
    let strage_data = JSON.parse(localStorage.getItem('ninco_cart'));
    id = Number(id);

    if (strage_data !== null) { // もし要素が入っていたら
      return strage_data.indexOf(id) !== -1; // true
    }
  }

  function doneFlash(text) {
    $('body').append(`<div class="c-flash">${text}</div>`);
    setTimeout(function () {
      location.reload(); // ローカルストレージはリロードされた時に反映されるため
    }, 2000);
  }

  $('.jsc-slick').slick({
    speed: 2000,
    autoplay: true,
    autoplaySpeed: 3000,
    dots: true,
    arrows: true,
    pauseOnHover: true,
    slidesToShow: 1,
    centerMode: true,
    centerPadding: '25%',
    prevArrow: '<div class="prev"></div>',
    nextArrow: '<div class="next"></div>',
    dotsClass: 'slick-dots',

    responsive: [{
      breakpoint: 768,
      settings: {
        centerMode: false,
        centerPadding: false
      }
    }]
  });

  $(window).on('load', function () {

    // ローディング
    setTimeout(function () {
      $('.jsi-elem-fadeOut').fadeOut();
    }, 600);
  });

  $(window).on('scroll', function () {
    const scrollPos = $(this).scrollTop(),
      wHeight = $(this).innerHeight();

    // フェードイン
    $('[data-fadeIn]').each(function (index, el) {
      const elePos = $(el).offset().top;

      if (scrollPos > elePos - (wHeight / 2)) {
        $(el).addClass('is-show');
      }
    });

    // ころりん
    $('.jsc-elem-slide-rotate').each(function () {
      const brandPos = $('.jsi-elem-pos').offset().top;
      const menPos = $('.jsi-men-pos').offset().top;

      (scrollPos > menPos - wHeight ? $(this).addClass('is-show') : $(this).removeClass('is-show'));

      (scrollPos > brandPos - wHeight / 2 + 100 ? $(this).removeClass('is-show') : $(this).addClass('is-show'));
    });
  });

  // ハンバーガーメニュー
  $('.jsc-elem-trigger').on('touchstart', function (e) {
    e.preventDefault();

    $('.jsc-elem-change').toggleClass('is-active');
    $('.jsc-elem-slideIn').toggleClass('is-active');
  });

  // サイズ選択
  $('.jsc-elem-select').on('click', function () {
    const $select_size = $(this).text();

    $(this).addClass('is-active');
    $(this).siblings().removeClass('is-active'); // 押した要素の兄弟要素

    $('.jsc-elem-size').text($select_size);
  });

  // レビュー選択
  const selectReview = (function () {
    let review_num = 0;

    $('.jsc-elem-review').on('click', function () {
      if (review_num == $('.jsc-elem-review').index(this) + 1) {
        $('.jsc-elem-review').removeClass('is-active');
        review_num = 0;
      } else {
        review_num = $('.jsc-elem-review').index(this) + 1;
        $('.jsc-elem-review').removeClass('is-active');
        $(`.jsc-elem-review:lt('${review_num}')`).addClass('is-active');
      }
    });
  })();

  // 商品説明
  $('.jsc-elem-show').on('click', function () {
    $(this).toggleClass('is-active');

    $('.jsc-elem-slideDown').slideToggle();
  });

  // NEWの一覧を取得
  if (page_type == 'page_index') {
    let item_list_new = getItemList('new');

    $('[data-item-list="new"]').append(createDom(item_list_new));

    categorys.forEach(function (category) {
      let item_list_category = getItemList('category', category);

      item_list_category = createDom(item_list_category);
      $(`[data-item-list="${category}"]`).append(item_list_category);
    });
  }

  // カートからアイテムを削除
  $('body').on('click', '.cart-delete', function () {
    if (confirm('本当に削除して良いですか?')) {
      const item_id = $(this).parents('[data-item-id]').attr('data-item-id');

      storageControl(item_id);

      setTimeout(function () {
        location.reload();
      }, 200);
    }
  });
  
  // 購入ボタンを押した時の処理
  $('.jsi-btn-buy').on('click', function () {
    if (confirm('購入して良いですか?')) {
      localStorage.removeItem('ninco_cart');
      alert('購入しました!');
    }
  });

  // カートに追加
  $('.jsi-btn-addCart').on('click', function () {
    const item_id = $(this).parents('.jsi-elem-detail').attr('data-item-id');
    storageControl(item_id);

    if (storageSaveJudge(item_id)) {
      doneFlash('カートに追加しました。');
    } else {
      doneFlash('カートから外しました。');
    }
  });

  // カートに入れたアイテムを生成
  const cart_storage = JSON.parse(localStorage.getItem('ninco_cart'));

  // ストレージ合計値計算
  if (cart_storage !== null) {
    let cart_price = 0;

    const cart_items = item_data.filter(function (item) {
      if (cart_storage.indexOf(item.id) !== -1) {
        cart_price += item.price;
        return item;
      }
    });

    $('#cart-list').append(createDom(cart_items, true));
    $('[data-total-num="number"],.jsc-elem-batch').text(cart_storage.length);

    if (cart_storage.length <= 0) {
      $('.jsc-elem-batch').hide();
    }

    $('[data-total-num="price"]').text(cart_price);
  } else {
    $('.jsc-elem-batch').hide();
  }

  // 詳細ページ
  if (page_type == 'page_detail') {
    const item_detail = getItemSingle();

    Object.keys(item_detail).forEach(function (key) {
      $(`[data-item-parts="${key}"]`).text(item_detail[key]);
    });

    $('#zoom-image').attr('src', `/assets/images/item/${item_detail.id}.png`);
    $('#zoom-image').attr('data-zoom-image', `/assets/images/item/${item_detail.id}_l.png`);
    $('.jsi-elem-detail').attr('data-item-id', item_detail.id);

    if (!item_detail.new) {
      $('.new-label').remove();
    }

    if (storageSa
anonymous No title
JavaScript
testtest
anonymous YouTubeの現在の再生時間をクリップボードに貼り付けるブックマークレット
MIT JavaScript
javascript:(function(){var v = document.querySelector('video'); var h = Math.floor(v.getCurrentTime() / 3600);var m =  Math.floor((v.getCurrentTime() / 3600 - h)*60); var s =  Math.floor(((v.getCurrentTime() / 3600 - h)*60 - m )* 60);var text = h.toString().padStart(2,'0')+':'+m.toString().padStart(2,'0')+':'+s.toString().padStart(2,'0'); var ta = document.createElement("textarea"); ta.value = text; document.body.appendChild(ta); ta.select();document.execCommand("copy"); ta.parentElement.removeChild(ta);})();
anonymous No title
JavaScript
var memo = "";

module.exports = async function (context, req) {
    memo = memo  +  req.query.memo;
    context.res = {
        body: memo
    };
}
anonymous No title
JavaScript
function licencer_aws() {
  chrome.storage.sync.get("keyword", function (arrayInfo_result) {
    var array = arrayInfo_result.keyword;
    var param = "?LdKmkrASo=" + 'testkey' + "&Type=get";
    let sendParams = {
      AcountName: array[0],
      AcountID: array[1],
      ItemName: array[2],
      RakusatushaAcountName:array[3],
      RakusatushaName:array[4],
      AdressNum:array[5],
      Adress:array[6],
      PhoneNum:array[7],
      ItemAmt:array[8],
      Money:array[9],
      Shipping:array[10],
      Day:array[11],
      OrderNum:array[12],
      SubTotal:array[13],
      Shipping2:array[14],
      Total:array[15],
      Gift:array[16],
      TotalSum:array[17]
    }
    var requestURL = "https://xctz9p0pw6.execute-api.ap-northeast-1.amazonaws.com/dev";
    var request = new XMLHttpRequest();

    request.onreadystatechange = function()
    {
        var READYSTATE_COMPLETED = 4;
        var HTTP_STATUS_OK = 200;

        if( this.readyState == READYSTATE_COMPLETED
         && this.status == HTTP_STATUS_OK )
        {
            // レスポンスの表示
            alert( this.responseText );
        }
    }

    request.open( 'POST', requestURL);

    // サーバに対して解析方法を指定する
    request.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );

    // データをリクエスト ボディに含めて送信する
    request.send( EncodeHTMLForm( sendParams ) );
  });
}

// HTMLフォームの形式にデータを変換する
function EncodeHTMLForm( data )
{
    var params = [];

    for( var name in data )
    {
        var value = data[ name ];
        var param = encodeURIComponent( name ) + '=' + encodeURIComponent( value );

        params.push( param );
    }

    return params.join( '&' ).replace( /%20/g, '+' );
}
Don't you submit code?
Submit