我一直在使用 Rangy.js 进行选择范围,到目前为止非常喜欢它。我希望将选择范围的文本节点包装在某个标签内,并在单击按钮时切换它。我使用 cssClassApplierModule 让它工作得很好,除了(并且由于名称而有意义)我还必须给 dom 元素一个它应用到自身的类。
所以现在当我选择一个范围并应用一个强标签时,我的最终结果是:
Text text text <strong class="test"> selected text </strong> text text text
我希望它是:
Text text text <strong> selected text </strong> text text text
我到目前为止的代码如下:
function gEBI(id) {
return document.getElementById(id);
}
var action;
function toggleAction() {
action.toggleSelection();
}
rangy.init();
// Enable buttons
var cssClassApplierModule = rangy.modules.CssClassApplier;
// Next line is pure paranoia: it will only return false if the browser has no support for ranges,
// selections or TextRanges. Even IE 5 would pass this test.
if (rangy.supported && cssClassApplierModule && cssClassApplierModule.supported) {
action = rangy.createCssClassApplier("test", {
elementTagName: "strong",
elementProperties: { }
});
var toggleActionButton = gEBI(nsID);
toggleActionButton.disabled = false;
toggleActionButton.ontouchstart = toggleActionButton.onmousedown = function () {
toggleAction();
return false;
};
}
我尝试使用 "" 和 null 而不是 "text" 作为传递的 css 类,它会切换,但不再关闭,显然不是正确的解决方案。
任何帮助表示赞赏.. 谢谢!