您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows usage of [spoiler]Spoilers[/spoiler] and >greentext inside of picarto chats
当前为
- // ==UserScript==
- // @name 4chan Text Functions
- // @namespace Wolvan_PicartoTV_4chan_Chat_Functions
- // @version 1.1
- // @description Allows usage of [spoiler]Spoilers[/spoiler] and >greentext inside of picarto chats
- // @author Wolvan
- // @match *://*.picarto.tv/live/channel.php?*watch=*
- // @match *://*.picarto.tv/live/multistream.php?*watch=*
- // @grant none
- // ==/UserScript==
- // Get Picarto's jQuery instance, no need to polute it with our own
- var $ = window.jQuery;
- // A function to inject CSS into the site
- function addCSS(css) {
- var head, style;
- head = document.getElementsByTagName('head')[0];
- if (!head) { return; }
- style = document.createElement('style');
- style.type = 'text/css';
- style.innerHTML = css;
- head.appendChild(style);
- }
- // A function that lets me retrieve the text the user has selected
- function getSelectionText() {
- var text = "";
- if (window.getSelection) {
- text = window.getSelection().toString();
- } else if (document.selection && document.selection.type != "Control") {
- text = document.selection.createRange().text;
- }
- return text;
- }
- // On appending a new message to the messages container we replace the new message's control codes ([spoiler]/[/spoiler]) with properly css-formatted <s> tags
- // We also bind the mouseover and mouseout events to hide the spoilers again when you remove the mousecursor
- $("#msgs").on("append", function(){
- var incoming = $(".messageli:last").html();
- if (typeof(incoming) !== "undefined") {
- var processed = incoming.replace(/\[spoiler\]/gi, "<s>").replace(/\[\/spoiler\]/gi, "</s>");
- var countS = (processed.match(/<s>/g) || []).length;
- var countSE = (processed.match(/<\/s>/g) || []).length;
- var countDiff = countS - countSE;
- if (countDiff > 0) {
- for(i = 0; i <= countDiff; i++) {
- processed = processed + "</s>";
- }
- }
- $(".messageli:last").html(processed).find("s").mouseover(function() {
- $(this).css("color", "white");
- }).mouseout(function() {
- $(this).css("color", "black");
- });
- }
- });
- // Add the CSS to have the spoilers be black boxes without a strikethrough
- addCSS(' \
- s { \
- background-color: black; \
- color: black; \
- text-decoration: none; \
- }\
- ');
- // Allow Ctrl+S to use as hotkey for spoiler tags
- $("#msg").bind('keydown', function(event) {
- if (event.ctrlKey || event.metaKey) {
- if (String.fromCharCode(event.which).toLowerCase() === "s") {
- event.preventDefault();
- if (getSelectionText() !== "") {
- var fullmsg = $("#msg").val();
- $("#msg").val(fullmsg.replace(getSelectionText(), "[spoiler]" + getSelectionText() + "[/spoiler]"))
- } else {
- var caretPos = document.getElementById("msg").selectionStart;
- var textAreaTxt = jQuery("#msg").val();
- var txtToAdd = "[spoiler][/spoiler]";
- jQuery("#msg").val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );
- }
- }
- }
- });
- // On appending a new message to the message container we check if the first char of the message is > and turn the message green
- $("#msgs").on("append", function(){
- var msg = $(".messageli:last").find(".msgContent");
- if (msg.text().startsWith(">")) {
- msg.css("color", "#8ba446");
- }
- });