CKEditor的默认删除线功能运行良好,做什么是逻辑,添加" s"围绕具有删除线的文本的标签(我也可以让编辑器使用html5' s" del"标签),但问题是NVDA或JAWS等辅助性阅读技术不会读到这种内容以任何方式与普通文本不同,没有特殊设置。我要做的是在删除线文本的开头和结尾添加一个span标记,向用户说明这一事实:
<p>
<span style="height: 1px; width: 1px; position: absolute; overflow: hidden; top: -10px;">Start strikethrough. </span>
<s>Text with strikethrough</s>
<span style="height: 1px; width: 1px; position: absolute; overflow: hidden; top: -10px;">End strikethrough. </span>
</p>
正如您在此代码中看到的那样,跨度在页面中不可见,但读者将遵循dom顺序,因此将向用户发出删除线的警报。 我知道你可以构建一个插件来插入任何html但是我必须以与基本样式按钮相同的方式工作,具有切换功能:
经过大量研究和分析&#34;真实&#34;我得到了插件:
CKEDITOR.plugins.add( 'customStrike', {
icons: 'customStrike',
init: function( editor ) {
var style = new CKEDITOR.style( { element: 's' } );
editor.attachStyleStateChange( style, function (state) {
!editor.readOnly && editor.getCommand( 'customStrike').setState(state);
} );
editor.addCommand( 'customStrike', new CKEDITOR.styleCommand( style ) );
if ( editor.ui.addButton ) {
editor.ui.addButton( 'CustomStrike', {
label: 'Strike Through',
command: 'customStrike',
toolbar: 'custom'
} );
}
}
});
这与真正的插件完全一样,我试图解决这个代码但是样式定义中的元素属性只接受一个标签,据我所知,我需要一种方法来使用element属性来嵌套标签来完成此
有什么方法可以解决这个问题吗?
任何帮助都将不胜感激。
答案 0 :(得分:0)
对我来说,看起来你正试图解决问题的错误结局。这是读者的问题,他们不会以不同的方式阅读内容。讨论内容可能有一段时间(尽管它会破坏编辑),但是当读者更新并开始正确阅读内容时会出现问题。
无论如何,如果你现在坚持要求解决方案,那么我有两个建议:
s/del
标记上设置一些ARIA角色或其他属性,这些属性会以某种方式影响读者。