2
我一直在玩Rangy.js的選擇範圍,到目前爲止真的很喜歡它。我正在尋找將選擇範圍的文本節點包裝在某個標籤中,並在點擊按鈕時進行切換。我使用cssClassApplierModule工作得很好,除了(並且由於名稱有意義),我還需要爲dom元素提供一個它應用於自身的類。如何在沒有class屬性的情況下使用Rangy.js創建標籤?
所以現在當我選擇一個範圍和應用,例如強大的標籤,我的最終結果是:
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類被傳遞,它會切換,但不再切換,顯然不是正確的解決方案。
任何幫助表示感謝..謝謝!
公平和不錯的POC(感謝您的快速回復)。你有什麼可能總結你的感受還沒有準備好/完整嗎?看起來它對我來說工作得很好,但我更多地瞭解DOM選擇的複雜程度。 – 2012-07-25 18:25:55
@AndrewEddy:我處理了
元素和空白文本節點,因此可能會出現問題或不一致之處。除此之外,歡迎您使用代碼,但它沒有像我通常會給它的測試那樣的東西,我不確定架構或API,並且我沒有認爲它在點I停止。此外,如果有錯誤,我不太可能修復它們,因爲當我恢復工作時,我可能會重新開始並根據需要複製舊代碼的各個位。 – 2012-07-25 18:38:07
恩,這是一個很好的開始,我感謝你的時間和幫助的意願。 – 2012-07-25 19:31:34