您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button to edit your ZapChain answer inline into the page | BTC Donations welcome: http://onename.io/jt
// ==UserScript== // @name Edit ZapChain Answer inline // @namespace https://zapchain.com // @version 0.1 // @description Adds a button to edit your ZapChain answer inline into the page | BTC Donations welcome: http://onename.io/jt // @author Jess Telford, http://onename.io/jt // @match https://www.zapchain.com/a/* // @grant none // ==/UserScript== ;(function() { // Initial timeout, will be increased exponentially var timerInterval = 50; var answersByUser = {}; var answerElementSelectors = []; // Once the page is loaded $(function() { var userId = Parse.User.current().id; var questionId = window.location.pathname.replace('/a/', ''); var Question = Parse.Object.extend('Question'); var query = new Parse.Query(Question); query.equalTo('autoquestionid', questionId); query.equalTo('askedof', userId); query.find({ success: function(results) { $(results).each(function(i, result) { var answer = result.toJSON(); answersByUser[answer.objectId] = answer; answerElementSelectors.push('#qanda' + answer.objectId); }); if (answerElementSelectors.length > 0) { // Kick off the timeouts startTimeout(); } } }); }); function startTimeout() { window.setTimeout(checkForElements, timerInterval); } function checkForElements() { // Ensure the correct number of elements exist in the page before proceeding if ($(answerElementSelectors.join(',')).length == answerElementSelectors.length) { // Find all the elements and make them editable $.each(answersByUser, function(answerId, answer) { var answerEl = $('#qanda' + answerId).first(); if (answerEl.length > 0) { makeAnswerEditable(answer, answerId, answerEl); } }); } else { timerInterval = timerInterval * 2; startTimeout(); } } function makeAnswerEditable(result, answerId, container) { var answerEl = $('#answertext' + answerId, container); // The new editable text area var textareaEl = $('<textarea>' + result.answer + '</textarea>') .attr('id', 'editedanswertext' + answerId) .css({ boxSizing: 'border-box', width: '100%', fontSize: '18px', lineHeight: '160%', wordBreak: 'normal', display: 'none' }); // Insert it into the page textareaEl.insertAfter(answerEl); // Build the Edit button's HTML var editEl = $('<button>Edit</button>') .attr('id', 'edit_button' + answerId) .css({ padding: '10px', float: 'right', cursor: 'pointer' }); var saveEl = editEl.clone(false) .css({ display: 'none' }) .html('Save'); // Set up the click handler to start editing the content editEl.on('click', function() { editEl.hide(); answerEl.hide(); saveEl.show(); textareaEl.show(); }); saveEl.on('click', function() { saveEl.attr('disabled', 'disabled'); saveEl.css('pointer', 'auto'); saveAnswer(textareaEl.val(), answerId); }); // Insert the buttons into the page saveEl.prependTo($('#loggedin_like' + answerId, container)); editEl.prependTo($('#loggedin_like' + answerId, container)); function saveAnswer(answer, answerId) { // Update question with the answer var Question = Parse.Object.extend("Question"); var question = new Question(); question.id = answerId; // Set a new value on quantity question.set("answer", answer); // Save question.save(null, { success: function(question) { location.reload(); }, error: function(point, error) { console.error('Error saving answer:', arguments); } }); } }; })()