Тема: HTML (in IE)/JS: Копирование выделения на страницк как "plain text"
Сделал для облегчения "копи-паста" со страниц IE содержимого выделения в текстовом виде (без форматирования) короткий скрипт, который вызывается из контекстного меню IE мои дополнительным пунктом "Copy (as plain text;)".
Скрипт для инсталл/деинсталла пункта в меню:
' IE_copyAsText_setup.vbs
' ----------------------------------------------------------------------------------------
' Добавляет/Удаляет в контекстное меню Internet Explorer пункт "Copy (as plain text;)"
' ----------------------------------------------------------------------------------------
Dim sMenu, REG_MENUEXT, rc
'--- имя добавляемого пункта
sMenu = "Copy (as plain text;)" 'имя добавляемого пункта
REG_MENUEXT = "HKCU\Software\Microsoft\Internet Explorer\MenuExt\" ' путь к меню Internet Explorer в реестре
Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
'--- проверка наличия в IE нашего пункта'
If uf_keyExists( REG_MENUEXT & sMenu & "\" ) Then
'--- менюшка уже есть, предлагаем удалить'
rc=MsgBox("Удалять из меню Internet Explorer данный пункт ?" & vbCrLf , vbQuestion + vbOKCancel, sMenu)
If rc=vbOK Then
WshShell.RegDelete( REG_MENUEXT & sMenu & "\" )
MsgBox "Удаление выполнено." & vbCrLf &_
"Перезапустите Internet Explorer, чтобы изменения вступили в силу" & vbCrLf & vbCrLf, _
vbInformation, "Удаление в IE меню """ & sMenu & """"
End IF
else '--- пункта меню нет, предлагаем установить'
rc = MsgBox("Хотите добавить в контекстное меню Internet Explorer пункт """ & sMenu & """" & vbCrLf & vbCrLf & _
"для возможности копирования в IE выделения как простого текста (plain text) ?" & vbCrLf & vbCrLf, _
vbYesNo OR vbQuestion, "Установка """ & sMenu & """")
If rc=vbYes Then
Dim sPathApp, sPathHTM, REG_NEWMENU
sPathApp = fso.GetAbsolutePathName(".") 'путь к каталогу запуска задачи'
sPathHTM = sPathApp & "\IE_copyAsText.htm" 'путь к программе добавления ссылок'''''''''''''''''''''''''''''''''
' Записываем в реестр требуемые значения
REG_NEWMENU = REG_MENUEXT & sMenu & "\"
WshShell.RegWrite REG_NEWMENU, sPathHTM, "REG_SZ"
WshShell.RegWrite REG_NEWMENU & "Contexts", 8+16+32, "REG_DWORD" 'Таблица 0x8 + Выделенный текст 0x10 + Ссылка 0x20'
WshShell.RegWrite REG_NEWMENU & "Flags", 1, "REG_DWORD"
MsgBox "Данные были успешно внесены," & vbCrLf & _
"путь к программе прописан следующий - """&sPathHTM&"""." & vbCrLf & vbCrLf & _
"Перезапустите Internet Explorer, чтобы изменения вступили в силу, " &_
"добавленный пункт будет отображаться в контекстном меню." & vbCrLf &vbCrLf,_
vbInformation, sMenu
End IF
End If
Set FSO = Nothing
Set WshShell = Nothing
'--- проверка наличия ключа реестра'
Function uf_keyExists(key)
Dim key2
On Error Resume Next
key2 = WshShell.RegRead(key)
If Err <> 0 Then
uf_keyExists = False
Else
uf_keyExists = True
End If
On Error GoTo 0
End FunctionКод страницы со скриптом:
<!-- IE_copyAsText.htm
Данная страничка выполняет копирование в clipboard выделенного на странице содержимого как простого текста.
Меню вызова этой страницы настраивается запуском скрипта - "IE_copyAsText_setup.vbs".
-->
<html style="width: 300px; height: 160px; margin: 1px; status:1">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="Author" content="Roman.Gerashchenko@otpbank.com.ua">
<meta name="Description" content="Copy selected content in IE as plain text">
<head>
<title>as plain text</title>
</head>
<!-- ========================================= HTML =========================================== -->
<BODY BGCOLOR="#C0C0C0" onload="Window_OnLoad();">
<div align="center">
<TEXTAREA id=ta_textResult rows=5 cols=40
style="font-size: 10;">
</TEXTAREA>
</div>
<br><br>
<hr><small>
<i> IE_copyAsText.htm v1.0 by 05.09.2012 © R.G.</i></small>
<!-- ====================================== VBScript ========================================== -->
<script language="VBScript">
'/-/-/-/-/-/-/-/-/-/ Вспом. функции - для вызова из JScript некоторых возможностей VBScript /-/-/-/-/-/-/'
Function vb_Trim (ps)
vb_Trim = RTrim( LTrim(ps) ) 'почему-то одной функции Trim() не достаточно!:('
End Function
</script>
<!-- =================================== JScript ============================================== -->
<script language="JavaScript">
// отрабатывает при открытии окна - получение значений из "вызвавшей" страницы
function Window_OnLoad()
{
var parentwin = external.menuArguments; // получаем объект окна
var doc = parentwin.document; // получаем объект документа
var sel = "";
sel = doc.selection.createRange().text; // получаем текст выделения
sel = vb_Trim( sel ); // отсекаем лидирующие и конечные пробелы
if (sel=="") alert("На странице не было выделения непустого текстового содержимого"); else {
document.all.ta_textResult.value = sel; // вставляем полученный текст в объект TEXTAREA
ta_textResult.createTextRange().execCommand("Copy"); //копируем в clipboard
}
// alert("Close");
window.close();
}
</script>
</body>
</html>Можно скачать mp4-клип - "мануал"
https://code.google.com/p/small-scripts … n=2&q=

