AlphaKaikin

Enables range selection and context menu display in the body of the Alphapolis novel

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name            AlphaKaikin
// @name:ja         α解禁
// @namespace       https://furyutei.work
// @license         MIT
// @version         0.0.1
// @description     Enables range selection and context menu display in the body of the Alphapolis novel
// @description:ja  アルファポリス小説本文の範囲選択やコンテキストメニュー表示等を可能に
// @author          furyu
// @match           https://www.alphapolis.co.jp/novel/*
// @grant           none
// @compatible      chrome
// @compatible      firefox
// @supportURL      https://github.com/furyutei/AlphaKaikin/issues
// @contributionURL https://memo.furyutei.work/about#%E6%B0%97%E3%81%AB%E5%85%A5%E3%81%A3%E3%81%9F%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8A%E6%B0%97%E6%8C%81%E3%81%A1%E3%81%AF%E3%82%AE%E3%83%95%E3%83%88%E5%88%B8%E3%81%A7
// ==/UserScript==

( () => {
const
    remove_copyguard = () => {
        $( window ).on( 'focusout', ( event ) => event.stopImmediatePropagation() );
        let handlers = $._data( window ).events.focusout;
        handlers.unshift( handlers.pop() );
        $( '#novelBoby' ).css( 'user-select', '' );
        delete document.oncopy;
        delete document.onselectstart;
        delete document.oncontextmenu;
        document.addEventListener( 'copy', ( event ) => event.stopPropagation(), true );
        document.addEventListener( 'selectstart', ( event ) => event.stopPropagation(), true );
        document.addEventListener( 'contextmenu', ( event ) => event.stopPropagation(), true );
    },
    script = document.createElement( 'script' );

script.async = false;
script.textContent = '(' + remove_copyguard.toString() +')();';
document.documentElement.appendChild( script );
} )();