我想創建一個textarea,用戶可以在其中選擇文本的一部分,然後根據他們的選擇做出反應。所以,我需要在文本區域中獲取和設置文本選擇
1)獲取選定的文本
2)獲得焦點的位置,如果是在文本區域並沒有選擇
似乎開始和結束位置這樣做的功能是不同的從一個探險家到另一個。那麼有誰能告訴我在Office加載項中做什麼的方法?
我試過以下兩種方法(即選擇myTextarea
中的文本的一部分,點擊button
,然後調試代碼),它們似乎不是正確的功能。
(function() {
"use strict";
Office.initialize = function(reason) {
$(document).ready(function() {
app.initialize();
$('#button').click(showSelection);
});
};
function showSelection() {
// way 1
console.log(document.selection); // undefined
document.getElementById("myTextarea").focus();
var sel = document.selection.createRange(); // Uncaught TypeError: Cannot read property 'createRange' of undefined
selectedText = sel.text;
// way 2
console.log(document.getElementById("myTextarea").selectionstart); // undefined
console.log(document.getElementById("myTextarea").selectionend); // undefined
}
})();
此外,這將是巨大的,如果一個也能告訴我如何實現如下的代碼:
1)選擇文本的一部分,從一開始和結束位置
2)設置聚焦在textarea的的某一位置
編輯1:
我只是試圖window.getSelection()
我的Excel插件中:
function showselection() {
var a = window.getSelection();
var b = window.getSelection().toString();
var c = window.getSelection().getRangeAt(0);
}
選擇在textarea的文本,並點擊button
後,我調試一步一步:第一線做出a
a = Selection {anchorNode: null, anchorOffset: 0, focusNode: null, focusOffset: 0, is ...
;第二行返回""
,第三行得到了一個錯誤Home.js:19 Uncaught IndexSizeError: Failed to execute 'getRangeAt' on 'Selection': 0 is not a valid index.
它看起來像選擇還沒有成功地抓住了......
這裏是JSBin沒有Excel插件框架,它返回如上幾乎相同的結果。
有幾個問題: 1.您的意思是「焦點位置」是什麼意思?這與用戶的選擇有何不同? 2.它看起來像是一個ID爲「myTextArea」的DOM對象:你能澄清那是什麼嗎? –
1.當沒有選擇時,用戶仍然可以點擊textarea並放置焦點,我想獲得它的位置。 2)「myTextArea」只是一個'ms-TextField'(如果他們提供getter和setter,我可以使用其他類的textarea)。 – SoftTimur