Здравствуйте, zitz, Вы писали:
Z>>>Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy?
CS>>Ctrl+C будет копировать выделение в clipboard и всё такое прочее.
Z>Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего
Z>А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано
Z>Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект
Вот пример behavior:htmlarea на <div class="selectable">.
Там объявлены:
custom menu — <menu.context #for-htmlarea>
getSelectedText() — функция возвращает plain text из selection
getSelectedHTML() — функция возвращает HTML из selection
Эти две функции можно вызывать снаружи из C++
sciter::value result;
SciterCall(hwnd,"getSelectedText",0,nullptr,&result);
А можно всю твою обработку содержимого selection прямо в скрипте и делать.
<html>
<head>
<title>behavior:htmlarea demo</title>
<style>
div.selectable {
border:1px solid;
behavior:htmlarea;
context-menu: selector(menu#for-htmlarea);
}
</style>
<menu.context #for-htmlarea>
<li command="edit:copy" style="foreground-image:url(sciter:copy.png)"><label>Copy</label><span class="accesskey">Ctrl+C</span></li>
<hr/>
<li command="edit:selectall"><label>Select All</label><span class="accesskey">Ctrl+A</span></li>
<hr/>
<caption>Custom actions</caption>
<li #selected-text><label>Show selected text</label></li>
<li #selected-html><label>Show selected HTML</label></li>
</menu>
<script type="text/tiscript">
function getSelectedText() {
return $(div.selectable).selection.text;
}
function getSelectedHTML() {
return $(div.selectable).selection.html;
}
function hasSelection() {
return $(div.selectable).selection.type;
}
$(div.selectable).on("click","li#selected-text", function() { view.msgbox(#information,getSelectedText().htmlEscape()); })
.on("click","li#selected-html", function() { view.msgbox(#information,getSelectedHTML().htmlEscape()); })
.on("keydown", function(evt) { return true; /*supress key handling in selectable */ } );
</script>
</head>
<body>
<p>Element below is selectable as it uses <code>behavior:htmlarea</code></p>
<div.selectable>
<h1>behavior:menu</h1>
<p>This behavior provides basic hierarchical menu functionality</p>
<h2>Elements</h2>
<p>that have this behavior applied by default to:</p>
<ul>
<li><code><menu class="context"></code> - context menu;</li>
<li><code><menu class="popup"></code> - popup menu.</li></ul>
<h2>Model</h2>
<p>Example of menu declaration in Sciter:</p>
<div>
</body>
</html>