[TIL 2021.10.26] Web API Selection
6292 ワード
Today I Learned
必要な機能は、まずAPIドキュメントを表示することです.
ハイライト表示するには、各位置に一意の値を設定する必要があります.
Serialization
オブジェクトまたはデータ構造を、ネットワークまたはストレージを介して伝送するのに適したフォーマットに変換するプロセス.
例えば、JavaScriptでJSON.stringby()を使用して、オブジェクトをJSON stringにシーケンス化できます.
Local storage
ローカルストレージは、キー値としてデータを格納するリポジトリです.
ローカルストレージに位置情報を格納する必要があります.ブラウザを閉じても、ハイライトを残します.
HTML内のテキストの位置を一意にするには、複数の要素を統合する必要があります.
参考のweb-highlighterでは、この点を区別するために、いろいろな種類を持ってきたようです. parent tag name parent index end and start textOffset uuid 選択テキスト文字列 今日は1番と2番を覚えました.
selection APIでparentElementのインポート方法を検索し、うろうろします.
最終的に悟ったのは,MDNで関数をざっと見て,何が一番速いかを考えることである.
タグが必要なインデックスは、同じ親要素内に同じタグが複数あるため区別できません.
start and end offsetと実際のハイライトテキストを加えると、完全に固有の値になります.
この一意のロケーション値をローカルストレージに格納するか、Chrome Extensionとして作成すると、各ページのURL情報を同時に含めることができます.
必要な機能は、まずAPIドキュメントを表示することです.
ハイライト表示するには、各位置に一意の値を設定する必要があります.
Serialization
オブジェクトまたはデータ構造を、ネットワークまたはストレージを介して伝送するのに適したフォーマットに変換するプロセス.
例えば、JavaScriptでJSON.stringby()を使用して、オブジェクトをJSON stringにシーケンス化できます.
Local storage
ローカルストレージは、キー値としてデータを格納するリポジトリです.
ローカルストレージに位置情報を格納する必要があります.ブラウザを閉じても、ハイライトを残します.
HTML内のテキストの位置を一意にするには、複数の要素を統合する必要があります.
参考のweb-highlighterでは、この点を区別するために、いろいろな種類を持ってきたようです.
selection APIでparentElementのインポート方法を検索し、うろうろします.
最終的に悟ったのは,MDNで関数をざっと見て,何が一番速いかを考えることである.
document.addEventListener("mouseup", (event) => {
if (document.getSelection().toString().length) {
let selection = document.getSelection();
let exactText = selection.toString();
let span = document.createElement("SPAN");
span.textContent = exactText;
let range = selection.getRangeAt(0);
range.deleteContents();
range.insertNode(span);
let parentElement = selection.anchorNode.parentElement;
let listByTagName = document.getElementsByTagName(parentElement.tagName);
let indexOfTags = 0;
for (let i = 0; i < listByTagName.length; i++) {
if (parentElement === listByTagName[i]) {
indexOfTags = i;
}
}
console.log(parentElement.tagName, indexOfTags);
}
});
いずれにしても、選択した関数によって、最終的にアクセスできます.タグが必要なインデックスは、同じ親要素内に同じタグが複数あるため区別できません.
start and end offsetと実際のハイライトテキストを加えると、完全に固有の値になります.
この一意のロケーション値をローカルストレージに格納するか、Chrome Extensionとして作成すると、各ページのURL情報を同時に含めることができます.
Reference
この問題について([TIL 2021.10.26] Web API Selection), 我々は、より多くの情報をここで見つけました https://velog.io/@kyukim/20211026テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol