コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Aokomoriuta/NavFrame.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/** Collapsible tables *********************************************************
 *
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               [[Wikipedia:NavFrame]].
 *  Maintainers: [[:en:User:R. Koot]]
 */
var autoCollapse = 2;
var collapseCaption = "隠す";
var expandCaption = "表示";

function collapseTable(tableIndex)
{
	var Button = document.getElementById("collapseButton" + tableIndex);
	var Table = document.getElementById("collapsibleTable" + tableIndex);
	
	if (!Table || !Button) 
	{
		return false;
	}
	
	var Rows = Table.rows;
	
	if (Button.firstChild.data == collapseCaption) 
	{
		for (var i = 1; i < Rows.length; i++) 
		{
			Rows[i].style.display = "none";
		}
		Button.firstChild.data = expandCaption;
	}
	else 
	{
		for (var i = 1; i < Rows.length; i++) 
		{
			Rows[i].style.display = Rows[0].style.display;
		}
		Button.firstChild.data = collapseCaption;
	}
}

function createCollapseButtons()
{
	var tableIndex = 0;
	var NavigationBoxes = new Object();
	var Tables = document.getElementsByTagName("table");
	
	for (var i = 0; i < Tables.length; i++) 
	{
		if (hasClass(Tables[i], "collapsible")) 
		{
		
			/* only add button and increment count if there is a header row to work with */
			var HeaderRow = Tables[i].getElementsByTagName("tr")[0];
			if (!HeaderRow) 
				continue;
			var Header = HeaderRow.getElementsByTagName("th")[0];
			if (!Header) 
				continue;
			
			NavigationBoxes[tableIndex] = Tables[i];
			Tables[i].setAttribute("id", "collapsibleTable" + tableIndex);
			
			var Button = document.createElement("span");
			var ButtonLink = document.createElement("a");
			var ButtonText = document.createTextNode(collapseCaption);
			
			Button.className = "collapseButton"; //Styles are declared in Common.css
			ButtonLink.style.color = Header.style.color;
			ButtonLink.setAttribute("id", "collapseButton" + tableIndex);
			ButtonLink.setAttribute("href", "#");
			addHandler(ButtonLink, "click", new Function("evt", "collapseTable(" + tableIndex + " ); return killEvt( evt );"));
			ButtonLink.appendChild(ButtonText);
			
			Button.appendChild(document.createTextNode("["));
			Button.appendChild(ButtonLink);
			Button.appendChild(document.createTextNode("]"));
			
			Header.insertBefore(Button, Header.childNodes[0]);
			tableIndex++;
		}
	}
	
	for (var i = 0; i < tableIndex; i++) 
	{
		if (hasClass(NavigationBoxes[i], "collapsed") || (tableIndex >= autoCollapse && hasClass(NavigationBoxes[i], "autocollapse"))) 
		{
			collapseTable(i);
		}
		else if (hasClass(NavigationBoxes[i], "innercollapse")) 
		{
			var element = NavigationBoxes[i];
			while (element = element.parentNode) 
			{
				if (hasClass(element, "outercollapse")) 
				{
					collapseTable(i);
					break;
				}
			}
		}
	}
}

$(createCollapseButtons);

/** Dynamic Navigation Bars (experimental) *************************************
 *
 *  Description: See [[Wikipedia:NavFrame]].
 *  Maintainers: UNMAINTAINED
 */
// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';

// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
var NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
//var NavigationBarShowDefault = autoCollapse;


// shows and hides content and picture (if available) of navigation bars
// Parameters:
//     indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
	var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
	var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
	
	if (!NavFrame || !NavToggle) 
	{
		return false;
	}
	
	// if shown now
	if (NavToggle.firstChild.data == NavigationBarHide) 
	{
		for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) 
		{
			if (hasClass(NavChild, 'NavPic')) 
			{
				NavChild.style.display = 'none';
			}
			if (hasClass(NavChild, 'NavContent')) 
			{
				NavChild.style.display = 'none';
			}
		}
		NavToggle.firstChild.data = NavigationBarShow;
		
		// if hidden now
	}
	else if (NavToggle.firstChild.data == NavigationBarShow) 
	{
		for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) 
		{
			if (hasClass(NavChild, 'NavPic')) 
			{
				NavChild.style.display = 'block';
			}
			if (hasClass(NavChild, 'NavContent')) 
			{
				NavChild.style.display = 'block';
			}
		}
		NavToggle.firstChild.data = NavigationBarHide;
	}
}

// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
	var indexNavigationBar = 0;
	// iterate over all < div >-elements 
	var divs = document.getElementsByTagName("div");
	for (var i = 0; NavFrame = divs[i]; i++) 
	{
		// if found a navigation bar
		if (hasClass(NavFrame, "NavFrame")) 
		{
		
			indexNavigationBar++;
			var NavToggle = document.createElement("a");
			NavToggle.className = 'NavToggle';
			NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
			NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
			
			var NavToggleText = document.createTextNode(NavigationBarHide);
			NavToggle.appendChild(NavToggleText);
			// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
			for (var j = 0; j < NavFrame.childNodes.length; j++) 
			{
				if (hasClass(NavFrame.childNodes[j], "NavHead")) 
				{
					NavFrame.childNodes[j].appendChild(NavToggle);
				}
			}
			NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
		}
	}
	// if more Navigation Bars found than Default: hide all
	if (NavigationBarShowDefault < indexNavigationBar) 
	{
		for (var i = 1; i <= indexNavigationBar; i++) 
		{
			toggleNavigationBar(i);
		}
	}
	
}

$(createNavigationBarToggleButton);