您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A new Text Box for PKU BBS
- // ==UserScript==
- // @name bdwmTextBox
- // @namespace bdwmTextBox
- // @description A new Text Box for PKU BBS
- // @include *bdwm.net/bbs/bbspst.php*
- // @include *bdwm.net/bbs/bbspsm.php*
- // @version 0.1beta
- // @grant none
- // ==/UserScript==
- /**
- * cursorPosition Object
- *
- * Created by Blank Zheng on 2010/11/12.
- * Copyright (c) 2010 PlanABC.net. All rights reserved.
- *
- * The copyrights embodied in the content of this file are licensed under the BSD (revised) open source license.
- */
- var cursorPosition = {
- get: function (textarea) {
- var rangeData = {text: "", start: 0, end: 0 };
- if (textarea.setSelectionRange) { // W3C
- textarea.focus();
- rangeData.start= textarea.selectionStart;
- rangeData.end = textarea.selectionEnd;
- rangeData.text = (rangeData.start != rangeData.end) ? textarea.value.substring(rangeData.start, rangeData.end): "";
- }
- return rangeData;
- },
- set: function (textarea, rangeData) {
- if(!rangeData) {
- alert("You must get cursor position first.")
- }
- textarea.focus();
- if (textarea.setSelectionRange) { // W3C
- textarea.setSelectionRange(rangeData.start, rangeData.end);
- }
- },
- add: function (textarea, rangeData, text) {
- var oValue, nValue, nStart, nEnd, st;
- this.set(textarea, rangeData);
- if (textarea.setSelectionRange) { // W3C
- oValue = textarea.value;
- nValue = oValue.substring(0, rangeData.start) + text + oValue.substring(rangeData.end);
- nStart = nEnd = rangeData.start + text.length;
- st = textarea.scrollTop;
- textarea.value = nValue;
- // Fixbug:
- // After textarea.values = nValue, scrollTop value to 0
- if(textarea.scrollTop != st) {
- textarea.scrollTop = st;
- }
- textarea.setSelectionRange(nStart, nEnd);
- }
- }
- }
- function setTextAttr(textarea, attr) {
- range = cursorPosition.get(textarea);
- nText = '[' + attr + 'm' + range.text + '[m';
- cursorPosition.add(textarea, range, nText);
- }
- // 添加颜色下拉条
- function addSelect(parent, id, num, name) {
- var colors = [
- '黑色',
- '红色',
- '绿色',
- '黄色',
- '蓝色',
- '品红',
- '蓝绿',
- '白色'
- ];
- // 添加标题
- var title = document.createElement('span');
- title.innerHTML = name;
- parent.appendChild(title);
- // 生成下拉条
- var mySelect = document.createElement('select');
- mySelect.id = id;
- for (var i = 0; i < colors.length; i++) {
- var opt = document.createElement('option');
- opt.value = num + i;
- opt.innerHTML = colors[i];
- mySelect.appendChild(opt);
- }
- // 默认项: 未选择颜色
- var opt = document.createElement('option');
- opt.value = - 1;
- opt.innerHTML = '不设置';
- opt.selected = 'selected';
- // 设为默认选择
- mySelect.appendChild(opt);
- // 加入父节点
- parent.appendChild(mySelect);
- return mySelect;
- }
- // 添加复选框
- function addCheck(parent, val, name) {
- // 标题
- var title = document.createElement('span');
- title.innerHTML = name;
- parent.appendChild(title);
- // 选框
- var box = document.createElement('input');
- box.type = 'checkbox';
- box.value = val;
- // 加入父节点
- parent.appendChild(box);
- return box;
- }
- // 建立表格
- function createForm(textarea) {
- var myform = document.createElement('form');
- //选择颜色
- var pColor = document.createElement('p');
- var sfg = addSelect(pColor, 'fgcolor', 30, '前景色');
- var sbg = addSelect(pColor, 'bgcolor', 40, '背景色');
- myform.appendChild(pColor);
- // 复选框
- var pBoxes = document.createElement('p');
- var boxes = [
- addCheck(pBoxes, 1, '高亮'),
- addCheck(pBoxes, 5, '闪烁'),
- addCheck(pBoxes, 4, '下划线')
- ];
- myform.appendChild(pBoxes);
- // 确定按钮
- var btn = document.createElement('input');
- btn.type = 'button';
- btn.value = '确定';
- btn.onclick = function () {
- var attr = '';
- for (var i = 0; i < boxes.length; i++) {
- if (boxes[i].checked) {
- attr += ';' + boxes[i].value;
- }
- }
- if (sbg.value != '-1') {
- attr += ';' + sbg.value;
- }
- if (sfg.value != '-1') {
- attr += ';' + sfg.value;
- }
- setTextAttr(textarea, attr.substring(1));
- };
- myform.appendChild(btn);
- // 关闭按钮
- var closeBtn = document.createElement('input');
- closeBtn.type = 'button';
- closeBtn.value = '关闭';
- closeBtn.onclick = function () {
- this.parentNode.parentNode.style.display = 'none';
- };
- myform.appendChild(closeBtn);
- return myform;
- }
- console.log('script begins');
- /** 寻找目标表单
- var frmpost;
- if ((frmpost = document.getElementById('postfrm')) != null) {
- console.log('Post form \'postfrm\' found');
- } else if ((frmpost = document.getElementById('frmpost')) != null) {
- console.log('Post form \'frmpost\' found');
- } else {
- console.log('Post form not found!!!');
- }
- */
- // 获取文字窗口
- console.log('Getting textarea');
- var textBoxes = document.getElementsByName('text');
- if (textBoxes.length == 0) {
- alert('No such text box!');
- }
- var textArea = textBoxes[0];
- // 设置文本框为10行...
- textArea.rows = '10';
- console.log('textarea set to 10 lines');
- // 建立浮动窗体
- console.log('building the textAttr dialog');
- var mydiv = document.createElement('div');
- mydiv.style.position = 'fixed';
- mydiv.style.left = '30%';
- mydiv.style.top = '40%';
- mydiv.style.backgroundColor = '#89e842';
- mydiv.style.display = 'none';
- mydiv.appendChild(createForm(textArea));
- document.body.appendChild(mydiv);
- // 添加按钮
- console.log('adding button');
- var Buttons = document.getElementsByTagName('input');
- var postButton;
- for (var i = 0; i < Buttons.length; i++) {
- //alert(Buttons[i].value);
- if (Buttons[i].value == '发表' || Buttons[i].value == '发送') {
- postButton = Buttons[i];
- break;
- }
- }
- var attrBtn = document.createElement('input')
- attrBtn.type = 'button';
- attrBtn.onclick = function () {
- console.log('Button clicked');
- mydiv.style.display = 'block';
- };
- attrBtn.value = '设置文字属性';
- postButton.parentNode.insertBefore(attrBtn, postButton.nextSibling);
- console.log('script ends');
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址