<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://tensura-wiki.info/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://tensura-wiki.info/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://tensura-wiki.info/w/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-09-19T02:27:52Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://tensura-wiki.info/w/index.php?title=MediaWiki:Common.js&amp;diff=4275&amp;oldid=prev</id>
		<title>2026年9月2日 (水) 01:18にド馬による</title>
		<link rel="alternate" type="text/html" href="https://tensura-wiki.info/w/index.php?title=MediaWiki:Common.js&amp;diff=4275&amp;oldid=prev"/>
		<updated>2026-09-02T01:18:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://tensura-wiki.info/w/index.php?title=MediaWiki:Common.js&amp;amp;diff=4275&amp;amp;oldid=4248&quot;&gt;差分を表示&lt;/a&gt;</summary>
		<author><name>ド馬</name></author>
	</entry>
	<entry>
		<id>https://tensura-wiki.info/w/index.php?title=MediaWiki:Common.js&amp;diff=4248&amp;oldid=prev</id>
		<title>ド馬: ページの作成:「/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */ /* =========================================================  * 外部画像ギャラリー  * ========================================================= */  mw.hook('wikipage.content').add(function ($content) {  	$content.find('.ts-gallery').each(function () {  		var gallery = this;  		/* 二重初期化防止 */ 		if (gallery.d…」</title>
		<link rel="alternate" type="text/html" href="https://tensura-wiki.info/w/index.php?title=MediaWiki:Common.js&amp;diff=4248&amp;oldid=prev"/>
		<updated>2026-09-01T21:41:36Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます: &lt;/span&gt; &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;=========================================================  * 外部画像ギャラリー  * =========================================================: &lt;/span&gt;  mw.hook(&amp;#039;wikipage.content&amp;#039;).add(function ($content) {  	$content.find(&amp;#039;.ts-gallery&amp;#039;).each(function () {  		var gallery = this;  		&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;二重初期化防止: &lt;/span&gt; 		if (gallery.d…」&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */&lt;br /&gt;
/* =========================================================&lt;br /&gt;
 * 外部画像ギャラリー&lt;br /&gt;
 * ========================================================= */&lt;br /&gt;
&lt;br /&gt;
mw.hook('wikipage.content').add(function ($content) {&lt;br /&gt;
&lt;br /&gt;
	$content.find('.ts-gallery').each(function () {&lt;br /&gt;
&lt;br /&gt;
		var gallery = this;&lt;br /&gt;
&lt;br /&gt;
		/* 二重初期化防止 */&lt;br /&gt;
		if (gallery.dataset.galleryReady === '1') {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		gallery.dataset.galleryReady = '1';&lt;br /&gt;
&lt;br /&gt;
		var track = gallery.querySelector('.ts-gallery__track');&lt;br /&gt;
&lt;br /&gt;
		if (!track) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/* 戻るボタン */&lt;br /&gt;
		var prev = document.createElement('button');&lt;br /&gt;
		prev.type = 'button';&lt;br /&gt;
		prev.className = 'ts-gallery__nav ts-gallery__prev';&lt;br /&gt;
		prev.innerHTML = '&amp;amp;#8249;';&lt;br /&gt;
		prev.setAttribute('aria-label', '前の画像');&lt;br /&gt;
&lt;br /&gt;
		/* 進むボタン */&lt;br /&gt;
		var next = document.createElement('button');&lt;br /&gt;
		next.type = 'button';&lt;br /&gt;
		next.className = 'ts-gallery__nav ts-gallery__next';&lt;br /&gt;
		next.innerHTML = '&amp;amp;#8250;';&lt;br /&gt;
		next.setAttribute('aria-label', '次の画像');&lt;br /&gt;
&lt;br /&gt;
		gallery.appendChild(prev);&lt;br /&gt;
		gallery.appendChild(next);&lt;br /&gt;
&lt;br /&gt;
		/* 1回に移動する距離 */&lt;br /&gt;
		function getStep() {&lt;br /&gt;
&lt;br /&gt;
			var item = track.querySelector('.ts-gallery__item');&lt;br /&gt;
&lt;br /&gt;
			if (!item) {&lt;br /&gt;
				return track.clientWidth * 0.85;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var style = window.getComputedStyle(track);&lt;br /&gt;
			var gap = parseFloat(style.columnGap || style.gap) || 0;&lt;br /&gt;
&lt;br /&gt;
			return item.getBoundingClientRect().width + gap;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/* ボタン状態更新 */&lt;br /&gt;
		function updateButtons() {&lt;br /&gt;
&lt;br /&gt;
			var maxScroll =&lt;br /&gt;
				track.scrollWidth - track.clientWidth;&lt;br /&gt;
&lt;br /&gt;
			var scrollable = maxScroll &amp;gt; 5;&lt;br /&gt;
&lt;br /&gt;
			gallery.classList.toggle(&lt;br /&gt;
				'ts-gallery--scrollable',&lt;br /&gt;
				scrollable&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			prev.disabled =&lt;br /&gt;
				!scrollable ||&lt;br /&gt;
				track.scrollLeft &amp;lt;= 5;&lt;br /&gt;
&lt;br /&gt;
			next.disabled =&lt;br /&gt;
				!scrollable ||&lt;br /&gt;
				track.scrollLeft &amp;gt;= maxScroll - 5;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		prev.addEventListener('click', function () {&lt;br /&gt;
&lt;br /&gt;
			track.scrollBy({&lt;br /&gt;
				left: -getStep(),&lt;br /&gt;
				behavior: 'smooth'&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		next.addEventListener('click', function () {&lt;br /&gt;
&lt;br /&gt;
			track.scrollBy({&lt;br /&gt;
				left: getStep(),&lt;br /&gt;
				behavior: 'smooth'&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		var ticking = false;&lt;br /&gt;
&lt;br /&gt;
		track.addEventListener('scroll', function () {&lt;br /&gt;
&lt;br /&gt;
			if (!ticking) {&lt;br /&gt;
&lt;br /&gt;
				window.requestAnimationFrame(function () {&lt;br /&gt;
					updateButtons();&lt;br /&gt;
					ticking = false;&lt;br /&gt;
				});&lt;br /&gt;
&lt;br /&gt;
				ticking = true;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		}, { passive: true });&lt;br /&gt;
&lt;br /&gt;
		window.addEventListener('resize', updateButtons);&lt;br /&gt;
&lt;br /&gt;
		/* 画像読み込み後にも判定 */&lt;br /&gt;
		var images = track.querySelectorAll('img');&lt;br /&gt;
&lt;br /&gt;
		images.forEach(function (image) {&lt;br /&gt;
			image.addEventListener('load', updateButtons);&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		updateButtons();&lt;br /&gt;
	});&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>ド馬</name></author>
	</entry>
</feed>