Добрый день.
Прошу подсказать как получить текущий элемент выделения используя javascript. Ситуация такая, пишу программу на QT, в ней используется qwebkit и необходимо узнать что выделенно пользователем чтобы сформировать контекствное меню на основании того что выделил пользователь(картинку или таблицу или еще что). Представляется возможным только через JavaScript+DOM.
Значит делаю так:
1)
Код:
|
qDebug() << execJS("document.getSelection().toString()"); |
и получаю выделенную строку
2)
Код:
|
qDebug() << execJS("document.getSelection().getSelectedElement().getName().toString()"); |
ничего не получаю
Пробую CKEditor и aurora c этой же версией qwebkit там похоже getSelectedElement() срабатывает. Vожет я что упустил? Вот кусок кода из CKEditor
onShow : function()
{
// Detect if there's a selected table.
var selection = editor.getSelection(),
ranges = selection.getRanges(),
selectedTable = null;
var rowsInput = this.getContentElement( 'info', 'txtRows' ),
colsInput = this.getContentElement( 'info', 'txtCols' ),
widthInput = this.getContentElement( 'info', 'txtWidth' );
if ( command == 'tableProperties' )
{
if ( ( selectedTable = editor.getSelection().getSelectedElement() ) )
{
if ( selectedTable.getName() != 'table' )
selectedTable = null;
}
else if ( ranges.length > 0 )
{
// Webkit could report the following range on cell selection (#4948):
// <table><tr><td>[ </td></tr></table>]
if ( CKEDITOR.env.webkit )
ranges[ 0 ].shrink( CKEDITOR.NODE_ELEMENT );
var rangeRoot = ranges[0].getCommonAncestor( true );
selectedTable = rangeRoot.getAscendant( 'table', true );
}
// Save a reference to the selected table, and push a new set of default values.
this._.selectedElement = selectedTable;
}