← All posts tagged code

Tenno-Seremel
DOM web code JS
var x = document.querySelectorAll('p');
// x = NodeList [ <p>, <p> ]
x.forEach(function(a){ console.log(a); });
// TypeError: x.forEach is not a function
Array.prototype.forEach.call(x, function(a){ console.log(a); });
// <p>
// <p>

Т.е. всё, конечно, правильно, но где же удобство, «юзерфрендливость»?
Tenno-Seremel
code Linux XCompose
<Multi_key> <d> <c> : "℃" U2103 # degree celsius
<Multi_key> <D> <C> : "℃" U2103 # degree celsius
<Multi_key> <D> <c> : "℃" U2103 # degree celsius
<Multi_key> <d> <C> : "℃" U2103 # degree celsius
<Multi_key> <d> <k> : "K" U212A # degree kelvin
<Multi_key> <D> <K> : "K" U212A # degree kelvin
<Multi_key> <D> <k> : "K" U212A # degree kelvin
<Multi_key> <d> <K> : "K" U212A # degree kelvin
Tenno-Seremel
featured code scriptish Juick
Юзерскрипт скрывает картинки *nsfw и *18+ постов (хватит изобретать новые теги, упоротые!) пустой рамкой. Для отображения нужно клацнуть мышкой. В комментариях к посту (и самом посте) скрываются вообще все картинки. По крайней мере должны, если разметка всё-таки одинаковая. Если этого не нужно, можно вызов juick_hide_in_comments() закомментировать.

Вроде работает. Потом ещё потестирую.

// ==UserScript==
// @id             juick-nsfw-hider
// @name           Juick NSFW hider
// @version        1.0
// @namespace      
// @author         Tenno Seremel
// @description    
// @include        http://juick.com/*
// @include        https://juick.com/*
// @run-at         document-end
// ==/UserScript==
(function(){
	var HIDE_TAGS = ['nsfw', '18+'];
	var placeholder = document.createElement('span');
	placeholder.setAttribute(
		'style',
		'background: #FFF; outline: 1px dashed #ccc; position: absolute; left: 0; top: 0; width: 100%; height: 100%; cursor: pointer;'
	);
	placeholder.setAttribute('title', 'Показать.');
	// add_to_child - add to .ir child (list) or directly (separate post with comments)
	function insert_cover(post_el, add_to_child)
	{
		var image_block = (add_to_child) ? post_el.querySelector('.ir') : post_el;
		if (image_block) {
			image_block.style.position = 'relative';
			var new_cover = placeholder.cloneNode(true);
			new_cover.addEventListener('click', remove_cover, false);
			image_block.appendChild(new_cover);
		}
	}
	function remove_cover(ev)
	{
		var target = ev.target;
		target.parentNode.removeChild(target);
	}
	function juick_hide_in_list()
	{
		var posts = document.querySelectorAll('#content > article');
		for (var i = 0, len = posts.length; i < len; i++) {
			var current = posts[i];
			var tag_els = current.querySelectorAll('.u > a');
			// skip first as it's a username
			for (var j = 1, len2 = tag_els.length; j < len2; j++) {
				var current_tag = tag_els[j].textContent.trim().toLowerCase();
				if (HIDE_TAGS.indexOf(current_tag) !== -1) {
					insert_cover(current, true);
					break;
				}
			}
		}
	}
	function juick_hide_in_comments()
	{
		var tag_els = document.querySelectorAll('.msgthread .msg-tags > a');
		for (var i = 0, len = tag_els.length; i < len; i++) {
			var current_tag = tag_els[i].textContent.trim().toLowerCase();
			if (HIDE_TAGS.indexOf(current_tag) !== -1) {
				var posts = document.querySelectorAll('#content .msg .msg-media');
				for (var i = 0, len = posts.length; i < len; i++) {
					insert_cover(posts[i]);
				}
				return;
			}
		}
	}
	juick_hide_in_list();
	juick_hide_in_comments();
})();
Tenno-Seremel
featured code anilist
Кастомный CSS стиль для списков на анилисте. Уж больно тамошние загружаемые шрифты ГЭ. font-size: medium недостаточно, дожили! Пришлось rem'ы. Заодно и чёрный цвет букв и подсветка строки при ховере.

#lists, #lists th, #lists td { font: medium sans-serif; font-size: 1rem; }
#lists .list a, #lists h3 { color: #000; }
#lists .rtitle:hover td {
  background: #323841;
  background-image: linear-gradient(to bottom, #3D444E 0%, #323841 100%);
  color: #FFF;
}
#lists .rtitle:hover a, #lists .rtitle:hover .plus { color: #FFF; }
Tenno-Seremel
featured code stylish public Juick
Расширитель веб-морды жуйка для Stylish. Для не-Firefox браузеров @-moz-document domain("juick.com") и соответствующие { и } не нужно, скорее всего. В старой Опере, например, было не нужно. Кого размер шрифтов и раньше устраивал html, input { font-size: medium !important; } может не писать.

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("juick.com") {
    html, input { font-size: medium !important; }
    html { padding-left: 8px !important; padding-right: 8px !important; }
    body, body > header, #content, #footer, #mtoolbar, .msg-cont { width: auto !important; }
    #newmessage textarea, .msg-comment textarea { width: 100% !important; }
    article p { overflow: visible !important; }
    article p.ir { clear: right !important; }
    .ta-wrapper { display: block !important; }
}

О багах можно писать в комментариях. «Ненужно» писать ненужно, я вас и так слышу :}
Tenno-Seremel
featured code scriptish LOR
Наконец-то дошли руки скрыть все прикреплённые темы на ЛОРе. Скриптом т.к. ! (selector subject) из CSS4 ещё не реализовано.

// ==UserScript==
// @id             lor-fixer
// @name           LOR fixer
// @version        1.0
// @namespace      
// @author         Tenno Seremel
// @description    
// @include        http://www.linux.org.ru/forum/*
// @include        https://www.linux.org.ru/forum/*
// @run-at         document-start
// ==/UserScript==
(function(){
	function on_load()
	{
		var pinned_posts = document.querySelectorAll('.message-table img[alt="Прикреплено"]');
		for(i = 0, len = pinned_posts.length; i < len; i++) {
			pinned_posts[i].parentNode.parentNode.style.display = "none";
		}
	}

	document.addEventListener("DOMContentLoaded", on_load, false)
})();
Tenno-Seremel
featured code scriptish userjs Juick
Жуйкоблокер постов по тегам (Scriptish).

Если у вас GreaseMonkey, а не Scriptish отредактируйте шапку или создайте скрипт в GUI (что должно создать шапку какую надо) и скопируйте код. Если вдруг в GreaseMonkey не работает, то можно попробовать скопировать только то, что внутри on_load().

cast @beard

// ==UserScript==
// @id             juick-blacklist
// @name           juick-blacklist
// @version        1.0
// @namespace      
// @author         Tenno Seremel
// @description    
// @include        http://juick.com/*
// @run-at         document-start
// ==/UserScript==

(function(){
//-
function on_load()
{
	var black_list = ["созвездие", "звездолёт", "звездолет", "закадровое"];
	var messages = document.getElementsByClassName("msg");
	for (var i = 0, len = messages.length; i < len; i++) {
		var current = messages[i];
		var tags = current.querySelectorAll(".msg-tags a");
		for (var j = 0, len2 = tags.length; j < len2; j++) {
			var current_tag = tags[j];
			if (black_list.indexOf(current_tag.textContent.trim().toLowerCase()) != -1) current.style.display = "none";
		}
	}
}
document.addEventListener("DOMContentLoaded", on_load, false)
//-
})();
Tenno-Seremel
web code CSS
Моё традиционное «вступление» CSS:

* {
	color: inherit;
	font-size: inherit;
	font-style: inherit;
	font-weight: inherit;
	margin: 0;
	padding: 0;
}
a img { border: none; }

CSS он такой. Вроде бы наследование во все поля, но ВНЕЗАПНО дефолтные стили выбрасывают всё нойух.
Tenno-Seremel
Rails code ?
route:

namespace :admin do
  resources :images, :except => :index do
    get '(:gallery_id)', :action => :new
  end
end

view:

= link_to t('тратата'), new_admin_image_path(gallery_id: gallery[:id])

Ссылка получается вида «/admin/images/new?gallery_id=1», а не «/admin/images/new/1». Что я делаю не так? %)
Tenno-Seremel
code Linux Steam
># Check to make sure 64-bit systems can get 32-bit packages
>if [ "$(dpkg --print-architecture)" = "amd64" ] && ! dpkg --print-foreign-architectures | grep i386 >/dev/null; then
>    sudo dpkg --add-architecture i386
>fi

Мало того, что ненужно, так оно ещё и безобразничает :}
Tenno-Seremel
featured code scriptish Firefox
Больше никаких unload/beforeunload :3 Надо будет посмотреть, не сломалось ли что.

// ==UserScript==
// @id             block-unload-events
// @name           Block unload events
// @version        1.0
// @namespace      
// @author         Tenno Seremel
// @description    
// @include        *
// @run-at         document-start
// ==/UserScript==
(function(){
	function eat_event(e){
		e.stopImmediatePropagation();
	}
	window.addEventListener("beforeunload", eat_event, true);
	window.addEventListener("unload", eat_event, true);
})();