User:Emanuele/smfcurve.js: Difference between revisions From Online Manual

Jump to: navigation, search
mNo edit summary
mNo edit summary
Line 14: Line 14:
aText = document.createTextNode("Select");
aText = document.createTextNode("Select");
aLink.appendChild(aText);
aLink.appendChild(aText);
aLink.onclick = 'return smfWikiSelectText(this,true);';
aLink.onclick = new Function(return smfWikiSelectText(this,true));
aLink.id = 'link_code_'+a;
aLink.id = 'link_code_'+a;
aSpan.appendChild(aLink);
aSpan.appendChild(aLink);
Line 46: Line 46:
// Get the text in a code tag.
// Get the text in a code tag.
function smfWikiSelectText(oElement, bActOnElement)
function smfWikiSelectText(oElement, bActOnElement)
{
{alert(oElement);
oCurElement = oElement.id.substr(5);
oCurElement = oElement.id.substr(5);
// The place we're looking for is one div up, and next door - if it's auto detect.
// The place we're looking for is one div up, and next door - if it's auto detect.

Revision as of 20:00, 12 April 2011

window.onload = add_code_select;

function add_code_select(){
var cont = document.getElementById('content');
var codes = getElementsByClass('code', cont, 'div');

if(codes != null){
for (var a in codes) {
var aSpan = document.createElement('span');
var aLink = document.createElement('a');
var aText = document.createTextNode("Code: [");

aSpan.appendChild(aText);
aText = document.createTextNode("Select");
aLink.appendChild(aText);
aLink.onclick = new Function(return smfWikiSelectText(this,true));
aLink.id = 'link_code_'+a;
aSpan.appendChild(aLink);
var aText = document.createTextNode("]");
aSpan.appendChild(aText);

codes[a].insertBefore(aSpan, codes[a].firstChild);
codes[a].id = 'code_'+a;
}
}
}

function getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if ( node == null )
    node = document;
  if ( tag == null )
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}

// Get the text in a code tag.
function smfWikiSelectText(oElement, bActOnElement)
{alert(oElement);
	oCurElement = oElement.id.substr(5);
	// The place we're looking for is one div up, and next door - if it's auto detect.
	if (typeof(bActOnElement) == 'boolean' && bActOnElement)
		var oCodeArea = document.getElementById(oCurElement);
	else
		var oCodeArea = oCurElement.parentNode.nextSibling;

var els = oCodeArea.getElementsByTagName('pre');
oCodeArea = els[0];

	if (typeof(oCodeArea) != 'object' || oCodeArea == null)
		return false;

	// Start off with my favourite, internet explorer.
	if ('createTextRange' in document.body)
	{
		var oCurRange = document.body.createTextRange();
		oCurRange.moveToElementText(oCodeArea);
		oCurRange.select();
	}
	// Firefox at el.
	else if (window.getSelection)
	{
		var oCurSelection = window.getSelection();
		// Safari is special!
		if (oCurSelection.setBaseAndExtent)
		{
			var oLastChild = oCodeArea.lastChild;
			oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
		}
		else
		{
			var curRange = document.createRange();
			curRange.selectNodeContents(oCodeArea);

			oCurSelection.removeAllRanges();
			oCurSelection.addRange(curRange);
		}
	}

	return false;
}


Advertisement: