summaryrefslogtreecommitdiff
path: root/docs/log/EventView.aspx_files/oncopy.js
blob: c3e61bc3b0cdac57d145731e25d24fe33ab32ecc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Hook-up to the document.body.oncopy event,
// or in the <body>'s "oncopy" attribute.
// Author: Heath Stewart
function copyCode()
{
	try
	{
		var range = document.selection.createRange();
		if (document.selection.type != "none")
		{
			var parent = range.parentElement();
			var parentName = parent.tagName;
			if (parentName != null)
			{
				if (parentName.toLowerCase() == "pre")
				{
					// Replace superfluous <br> tags in a <pre> block.
					var re = /<br[^>]*>/gi;
					var code = range.htmlText.replace(re, "\r\n");

					// Replace non-breaking spaces.
					re = /&nbsp;/gi;
					code = code.replace(re, " ");

					// Replace & characters.
					re = /&amp;/gi;
					code = code.replace(re, "&");

					// Replace < characters.
					re = /&lt;/gi;
					code = code.replace(re, "<");

					// Replace > characters.
					re = /&gt;/gi;
					code = code.replace(re, ">");
					
					// CJM: Remove colorization
					re = /<\/?span([^>])*>/gi;
					code = code.replace(re, "");

					if (code != null)
					{
						window.event.returnValue = false;
						window.clipboardData.setData("Text", code);
					}
				}
			}
		}
	}
	catch(e) {}
}