私は選択範囲について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;
};
}
渡されるcssクラスとして「text」の代わりに「」とnullを試しましたが、トグルしますが、トグルオフではなくなり、明らかに正しい解決策ではありません。
助けていただければ幸いです。ありがとう!