diff --git a/www/code/inner.js b/www/code/inner.js index 4be60351a..fa97426d4 100644 --- a/www/code/inner.js +++ b/www/code/inner.js @@ -610,6 +610,7 @@ define([ Framework.create({ toolbarContainer: '#cme_toolbox', contentContainer: '#cp-app-code-editor', + skipLink: '.CodeMirror', thumbnail: { getContainer: getThumbnailContainer, filter: function (el, before) { diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index 07c2ad1e3..b316f69a9 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -2666,7 +2666,8 @@ Uncaught TypeError: Cannot read property 'calculatedType' of null }, sfCommon: common, $container: $bar, - $contentContainer: $('#cp-app-oo-container') + $contentContainer: $('#cp-app-oo-container'), + skipLink: 'iframe[name="frameEditor"]|#editor_sdk' }; toolbar = APP.toolbar = Toolbar.create(configTb); toolbar.showColors(); diff --git a/www/common/toolbar.js b/www/common/toolbar.js index c2a66c87a..f839430c2 100644 --- a/www/common/toolbar.js +++ b/www/common/toolbar.js @@ -865,22 +865,35 @@ MessengerUI, Messages, Pages, PadTypes) { Bar.createSkipLink = function (toolbar, config) { const targetId = config.skipLink || '#cp-skip-link'; - const $targetElement = $(targetId); const $skipLink = $('', { 'class': 'cp-toolbar-skip-link', 'href': targetId, 'tabindex': 0, - 'text': 'Skip to Main Content' + 'text': 'Skip to Main Content' // XXX }); toolbar.$top.append($skipLink); $skipLink.on('click', function (event) { event.preventDefault(); - const $firstFocusable = $targetElement.find('a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])').first(); - if ($firstFocusable.length) { - $firstFocusable.trigger('focus'); - } + let split = targetId.split('|'); // split for iframes + let $container = $('body'); + split.some(selector => { + let $targetElement = $container.find(selector); + if ($targetElement.is('iframe')) { + $container = $targetElement.contents(); + return; + } + const $firstFocusable = $targetElement.find('a, button, input, select, textarea, [tabindex]:not([tabindex="-1"]), [contenteditable="true"]').first(); + if ($firstFocusable.length) { + $firstFocusable.trigger('focus'); + } + return true; + }); + + + /* + */ }); return $skipLink; }; diff --git a/www/diagram/inner.js b/www/diagram/inner.js index b6176c1cf..606d84d66 100644 --- a/www/diagram/inner.js +++ b/www/diagram/inner.js @@ -250,6 +250,7 @@ define([ Framework.create({ toolbarContainer: '#cme_toolbox', contentContainer: '#cp-app-diagram-editor', + skipLink: '#cp-app-diagram-content|body .geSearchSidebar', // validateContent: validateXml, }, function (framework) { onFrameworkReady(framework); diff --git a/www/pad/inner.js b/www/pad/inner.js index e4cc93118..f912d00f2 100644 --- a/www/pad/inner.js +++ b/www/pad/inner.js @@ -1335,7 +1335,7 @@ define([ Framework.create({ toolbarContainer: '#cp-app-pad-toolbar', contentContainer: '#cp-app-pad-editor', - skipLink: '#cke_1_contents', + skipLink: '#cke_1_contents .cke_wysiwyg_frame|html', patchTransformer: ChainPad.NaiveJSONTransformer, /*thumbnail: { getContainer: function () { return $('iframe').contents().find('html')[0]; },