কেউ আমাকে জাভাস্ক্রিপ্ট ফাংশন সাহায্য করতে পারে যা একটি ওয়েব পৃষ্ঠায় পাঠ্য হাইলাইট করতে পারে। এবং প্রয়োজনীয়তাটি হ'ল - একবারে হাইলাইট করা, পাঠ্যের সমস্ত উপস্থিতি হাইলাইট করার মতো নয় যেমন আমরা অনুসন্ধানের ক্ষেত্রে করি।
কেউ আমাকে জাভাস্ক্রিপ্ট ফাংশন সাহায্য করতে পারে যা একটি ওয়েব পৃষ্ঠায় পাঠ্য হাইলাইট করতে পারে। এবং প্রয়োজনীয়তাটি হ'ল - একবারে হাইলাইট করা, পাঠ্যের সমস্ত উপস্থিতি হাইলাইট করার মতো নয় যেমন আমরা অনুসন্ধানের ক্ষেত্রে করি।
উত্তর:
আপনি jquery হাইলাইট প্রভাব ব্যবহার করতে পারেন ।
তবে আপনি যদি কাঁচা জাভাস্ক্রিপ্ট কোডটিতে আগ্রহী হন, তবে আমি কী পেয়েছি তা একবার দেখুন একটি HTML এ কীভাবে অনুলিপি করুন, ফাইলটি খুলুন এবং "হাইলাইট" ক্লিক করুন - এটি "ফক্স" শব্দটি হাইলাইট করা উচিত। পারফরম্যান্স অনুযায়ী আমি মনে করি এটি ছোট পাঠ্য এবং একক পুনরাবৃত্তির জন্য করবে (যেমন আপনি নির্দিষ্ট করেছেন)
function highlight(text) {
var inputText = document.getElementById("inputText");
var innerHTML = inputText.innerHTML;
var index = innerHTML.indexOf(text);
if (index >= 0) {
innerHTML = innerHTML.substring(0,index) + "<span class='highlight'>" + innerHTML.substring(index,index+text.length) + "</span>" + innerHTML.substring(index + text.length);
inputText.innerHTML = innerHTML;
}
}
.highlight {
background-color: yellow;
}
<button onclick="highlight('fox')">Highlight</button>
<div id="inputText">
The fox went over the fence
</div>
সম্পাদনা:
replace
আমি দেখেছি এই উত্তরটি কিছু জনপ্রিয়তা পেয়েছে, আমি ভেবেছিলাম আমি এটি যুক্ত করতে পারি। আপনি সহজেই প্রতিস্থাপন ব্যবহার করতে পারেন
"the fox jumped over the fence".replace(/fox/,"<span>fox</span>");
বা একাধিক ঘটনার জন্য (প্রশ্নের জন্য প্রাসঙ্গিক নয়, তবে মন্তব্যে জিজ্ঞাসা করা হয়েছিল) আপনি কেবল global
স্থান পরিবর্তন করতে পারেন নিয়মিত অভিব্যক্তি।
"the fox jumped over the other fox".replace(/fox/g,"<span>fox</span>");
আশা করি এটি আগ্রহী কমেন্টারদের সহায়তা করবে।
পুরো ওয়েব পৃষ্ঠার জন্য এইচটিএমএল প্রতিস্থাপন করতে innerHTML
, আপনার নথির বডি উল্লেখ করা উচিত ।
document.body.innerHTML
"<span class='highlight'>"
সাথে প্রতিস্থাপন করতে পারেন "<span style='color: " + color + ";'>"
, রঙটি এমন কিছু হওয়া উচিতvar color = "#ff0000";
<img src="fox.jpg" />
আপনি অবৈধ এইচটিএমএল পাবেন যা দেখতে পছন্দ করবে: <img src="<span class='highlight'>fox</span>.jpg" />
ভাল নয়
এখানে প্রদত্ত সমাধানগুলি বেশ খারাপ।
&
এর জন্য &, <
<, জন্য >
জন্য>, ä
একটি জন্য, ö
হে জন্য ü
তোমার জন্য ß
SS জন্য, ইত্যাদিতোমাকে যা করতে হবে:
লুপ HTML ডকুমেন্ট মাধ্যমে সমস্ত পাঠ্য নোড খুঁজে পেতে, textContent
সঙ্গে হাইলাইট টেক্সট অবস্থান পেতে indexOf
(একটি ঐচ্ছিক সঙ্গে toLowerCase
যদি এটা কেস-অবশ হওয়া উচিত) পরিশেষে যোগ সবকিছু আগে, indexof
যেমন textNode
, পরিশেষে যোগ একটি হাইলাইট বিঘত সঙ্গে মিলেছে পাঠ্য, এবং বাকী পাঠ্য নোডের জন্য পুনরাবৃত্তি করুন (হাইলাইট স্ট্রিংটি স্ট্রিংয়ে একাধিকবার সংঘটিত হতে পারে textContent
)।
এর জন্য কোডটি এখানে:
var InstantSearch = {
"highlight": function (container, highlightText)
{
var internalHighlighter = function (options)
{
var id = {
container: "container",
tokens: "tokens",
all: "all",
token: "token",
className: "className",
sensitiveSearch: "sensitiveSearch"
},
tokens = options[id.tokens],
allClassName = options[id.all][id.className],
allSensitiveSearch = options[id.all][id.sensitiveSearch];
function checkAndReplace(node, tokenArr, classNameAll, sensitiveSearchAll)
{
var nodeVal = node.nodeValue, parentNode = node.parentNode,
i, j, curToken, myToken, myClassName, mySensitiveSearch,
finalClassName, finalSensitiveSearch,
foundIndex, begin, matched, end,
textNode, span, isFirst;
for (i = 0, j = tokenArr.length; i < j; i++)
{
curToken = tokenArr[i];
myToken = curToken[id.token];
myClassName = curToken[id.className];
mySensitiveSearch = curToken[id.sensitiveSearch];
finalClassName = (classNameAll ? myClassName + " " + classNameAll : myClassName);
finalSensitiveSearch = (typeof sensitiveSearchAll !== "undefined" ? sensitiveSearchAll : mySensitiveSearch);
isFirst = true;
while (true)
{
if (finalSensitiveSearch)
foundIndex = nodeVal.indexOf(myToken);
else
foundIndex = nodeVal.toLowerCase().indexOf(myToken.toLowerCase());
if (foundIndex < 0)
{
if (isFirst)
break;
if (nodeVal)
{
textNode = document.createTextNode(nodeVal);
parentNode.insertBefore(textNode, node);
} // End if (nodeVal)
parentNode.removeChild(node);
break;
} // End if (foundIndex < 0)
isFirst = false;
begin = nodeVal.substring(0, foundIndex);
matched = nodeVal.substr(foundIndex, myToken.length);
if (begin)
{
textNode = document.createTextNode(begin);
parentNode.insertBefore(textNode, node);
} // End if (begin)
span = document.createElement("span");
span.className += finalClassName;
span.appendChild(document.createTextNode(matched));
parentNode.insertBefore(span, node);
nodeVal = nodeVal.substring(foundIndex + myToken.length);
} // Whend
} // Next i
}; // End Function checkAndReplace
function iterator(p)
{
if (p === null) return;
var children = Array.prototype.slice.call(p.childNodes), i, cur;
if (children.length)
{
for (i = 0; i < children.length; i++)
{
cur = children[i];
if (cur.nodeType === 3)
{
checkAndReplace(cur, tokens, allClassName, allSensitiveSearch);
}
else if (cur.nodeType === 1)
{
iterator(cur);
}
}
}
}; // End Function iterator
iterator(options[id.container]);
} // End Function highlighter
;
internalHighlighter(
{
container: container
, all:
{
className: "highlighter"
}
, tokens: [
{
token: highlightText
, className: "highlight"
, sensitiveSearch: false
}
]
}
); // End Call internalHighlighter
} // End Function highlight
};
তারপরে আপনি এটি ব্যবহার করতে পারেন:
function TestTextHighlighting(highlightText)
{
var container = document.getElementById("testDocument");
InstantSearch.highlight(container, highlightText);
}
এইচটিএমএল ডকুমেন্টের একটি উদাহরণ এখানে
<!DOCTYPE html>
<html>
<head>
<title>Example of Text Highlight</title>
<style type="text/css" media="screen">
.highlight{ background: #D3E18A;}
.light{ background-color: yellow;}
</style>
</head>
<body>
<div id="testDocument">
This is a test
<span> This is another test</span>
äöüÄÖÜäöüÄÖÜ
<span>Test123äöüÄÖÜ</span>
</div>
</body>
</html>
যাইহোক, আপনি যদি একটি ডাটাবেস দিয়ে অনুসন্ধান করেন LIKE
,
যেমন WHERE textField LIKE CONCAT('%', @query, '%')
[যা আপনার করা উচিত নয়, আপনার ফুলটেক্সট-অনুসন্ধান বা লুসিন ব্যবহার করা উচিত], তবে আপনি প্রতিটি অক্ষরকে character দিয়ে পালাতে পারেন এবং একটি এসকিউএল-এসেসেপ-স্টেটমেন্ট যুক্ত করতে পারেন, সেভাবে আপনি বিশেষ অক্ষরগুলি দেখতে পাবেন যেগুলি লাইক-এক্সপ্রেশন।
যেমন
WHERE textField LIKE CONCAT('%', @query, '%') ESCAPE '\'
এবং @ ক্যোয়ারির মানটি কিন্তু '%completed%'
নয়'%\c\o\m\p\l\e\t\e\d%'
(পরীক্ষিত, এসকিউএল-সার্ভার এবং পোস্টগ্র্যাস এসকিউএল এবং ESCAPE সমর্থন করে এমন প্রতিটি আরডিবিএমএস সিস্টেমের সাথে কাজ করে)
একটি সংশোধিত টাইপস্ক্রিপ্ট-সংস্করণ:
namespace SearchTools
{
export interface IToken
{
token: string;
className: string;
sensitiveSearch: boolean;
}
export class InstantSearch
{
protected m_container: Node;
protected m_defaultClassName: string;
protected m_defaultCaseSensitivity: boolean;
protected m_highlightTokens: IToken[];
constructor(container: Node, tokens: IToken[], defaultClassName?: string, defaultCaseSensitivity?: boolean)
{
this.iterator = this.iterator.bind(this);
this.checkAndReplace = this.checkAndReplace.bind(this);
this.highlight = this.highlight.bind(this);
this.highlightNode = this.highlightNode.bind(this);
this.m_container = container;
this.m_defaultClassName = defaultClassName || "highlight";
this.m_defaultCaseSensitivity = defaultCaseSensitivity || false;
this.m_highlightTokens = tokens || [{
token: "test",
className: this.m_defaultClassName,
sensitiveSearch: this.m_defaultCaseSensitivity
}];
}
protected checkAndReplace(node: Node)
{
let nodeVal: string = node.nodeValue;
let parentNode: Node = node.parentNode;
let textNode: Text = null;
for (let i = 0, j = this.m_highlightTokens.length; i < j; i++)
{
let curToken: IToken = this.m_highlightTokens[i];
let textToHighlight: string = curToken.token;
let highlightClassName: string = curToken.className || this.m_defaultClassName;
let caseSensitive: boolean = curToken.sensitiveSearch || this.m_defaultCaseSensitivity;
let isFirst: boolean = true;
while (true)
{
let foundIndex: number = caseSensitive ?
nodeVal.indexOf(textToHighlight)
: nodeVal.toLowerCase().indexOf(textToHighlight.toLowerCase());
if (foundIndex < 0)
{
if (isFirst)
break;
if (nodeVal)
{
textNode = document.createTextNode(nodeVal);
parentNode.insertBefore(textNode, node);
} // End if (nodeVal)
parentNode.removeChild(node);
break;
} // End if (foundIndex < 0)
isFirst = false;
let begin: string = nodeVal.substring(0, foundIndex);
let matched: string = nodeVal.substr(foundIndex, textToHighlight.length);
if (begin)
{
textNode = document.createTextNode(begin);
parentNode.insertBefore(textNode, node);
} // End if (begin)
let span: HTMLSpanElement = document.createElement("span");
if (!span.classList.contains(highlightClassName))
span.classList.add(highlightClassName);
span.appendChild(document.createTextNode(matched));
parentNode.insertBefore(span, node);
nodeVal = nodeVal.substring(foundIndex + textToHighlight.length);
} // Whend
} // Next i
} // End Sub checkAndReplace
protected iterator(p: Node)
{
if (p == null)
return;
let children: Node[] = Array.prototype.slice.call(p.childNodes);
if (children.length)
{
for (let i = 0; i < children.length; i++)
{
let cur: Node = children[i];
// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
if (cur.nodeType === Node.TEXT_NODE)
{
this.checkAndReplace(cur);
}
else if (cur.nodeType === Node.ELEMENT_NODE)
{
this.iterator(cur);
}
} // Next i
} // End if (children.length)
} // End Sub iterator
public highlightNode(n:Node)
{
this.iterator(n);
} // End Sub highlight
public highlight()
{
this.iterator(this.m_container);
} // End Sub highlight
} // End Class InstantSearch
} // End Namespace SearchTools
ব্যবহার:
let searchText = document.getElementById("txtSearchText");
let searchContainer = document.body; // document.getElementById("someTable");
let highlighter = new SearchTools.InstantSearch(searchContainer, [
{
token: "this is the text to highlight" // searchText.value,
className: "highlight", // this is the individual highlight class
sensitiveSearch: false
}
]);
// highlighter.highlight(); // this would highlight in the entire table
// foreach tr - for each td2
highlighter.highlightNode(td2); // this highlights in the second column of table
ä
যেমন ব্যবহার করার পরেও প্রকৃত চরিত্রে রূপান্তরিত হবে innerHTML
।
আপনার নিজের হাইলাইটিং ফাংশনটি স্ক্র্যাচ থেকে শুরু করা সম্ভবত এটির পক্ষে খারাপ ধারণা হবার কারণ হ'ল আপনি অন্যদের ইতিমধ্যে সমাধান করা সমস্যাগুলিতে অবশ্যই চলে যাবেন। চ্যালেঞ্জগুলি:
innerHTML
)জটিল মনে হচ্ছে? আপনি যদি কিছু বৈশিষ্ট্যগুলি চান যেমন হাইলাইট করা থেকে কিছু উপাদানকে উপেক্ষা, ডায়াক্রিটিক্স ম্যাপিং, প্রতিশব্দ ম্যাপিং, আইফ্রেমে ভিতরে অনুসন্ধান করা, পৃথক শব্দের অনুসন্ধান ইত্যাদি ইত্যাদি আরও জটিল হয়ে ওঠে।
একটি বিদ্যমান, ভাল বাস্তবায়িত প্লাগইন ব্যবহার করার সময়, আপনাকে উপরে বর্ণিত জিনিসগুলি নিয়ে চিন্তা করতে হবে না। নিবন্ধটি 10 jQuery এর টেক্সট হাইলাইটার প্লাগিন SitePoint জনপ্রিয় হাইলাইটার প্লাগিন তুলনা করা হয়।
চিহ্ন.js হ'ল এমন একটি প্লাগইন যা খাঁটি জাভাস্ক্রিপ্টে লিখিত হয় তবে এটি jQuery প্লাগইন হিসাবে উপলব্ধ। অপশনগুলির সাথে অন্যান্য প্লাগিনগুলির চেয়ে বেশি সুযোগ দেওয়ার জন্য এটি তৈরি করা হয়েছিল:
বিকল্পভাবে আপনি এই ঝাঁকুনি দেখতে পারেন ।
ব্যবহারের উদাহরণ :
// Highlight "keyword" in the specified context
$(".context").mark("keyword");
// Highlight the custom regular expression in the specified context
$(".context").markRegExp(/Lorem/gmi);
এটি গিটহাবের ( প্রকল্পের রেফারেন্স ) মুক্ত এবং বিকাশযুক্ত মুক্ত উত্স ।
acrossElements
বিকল্পটি ব্যবহার করে ট্যাগগুলির মধ্যে ম্যাচগুলি খুঁজে পেতে পারে । এবং তৃতীয় মন্তব্য; চিহ্নিত.জেএস এটি সরবরাহ করে এমন কার্যকারিতার তুলনায় বড় নয়। এবং না, ভবিষ্যতে কিছু ভাঙ্গার সম্ভাবনা নেই, যেহেতু মার্ক.জেএস পরীক্ষা করা হয়েছিল যেমন ক্রোম 30 শুরু করা এবং ক্রস ব্রাউজার ইউনিট পরীক্ষার সমস্ত নতুন সংস্করণে এবং আসন্ন সংস্করণগুলির সাথে কোনও সমস্যা ছিল না।
function stylizeHighlightedString() {
var text = window.getSelection();
// For diagnostics
var start = text.anchorOffset;
var end = text.focusOffset - text.anchorOffset;
range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
var span = document.createElement("span");
span.appendChild(selectionContents);
span.style.backgroundColor = "yellow";
span.style.color = "black";
range.insertNode(span);
}
span.style.backgroundColor = "yellow";
অনুবাদ করে এমন অনুস্মারক / টিপ style="background-color: yellow;"
- এটি উটকেস এবং ড্যাশড-নোটেশনের মধ্যে সূক্ষ্ম পার্থক্য আমাকে প্রথমে ছড়িয়ে দেয়।
এখানে আমার regexp খাঁটি জাভাস্ক্রিপ্ট সমাধান:
function highlight(text) {
document.body.innerHTML = document.body.innerHTML.replace(
new RegExp(text + '(?!([^<]+)?<)', 'gi'),
'<b style="background-color:#ff0;font-size:100%">$&</b>'
);
}
one|two|three
>
অক্ষর থাকে তবে এটি পাঠ্যটি প্রতিস্থাপন করবে না । (?!([^<]+)?<)
এটি কাজ করার জন্য ব্যবহার করে রেজেক্সটি সংশোধন করুন ।
অন্য কোনও সমাধানের সত্যিকার অর্থেই আমার প্রয়োজন মাপসই হয় না এবং যদিও স্টেফান স্টাইজারের সমাধানটি আমি প্রত্যাশা মতো কাজ করেছি তবে আমি এটি কিছুটা ভার্জোজাল পেয়েছি।
নিম্নলিখিত আমার প্রচেষ্টা:
/**
* Highlight keywords inside a DOM element
* @param {string} elem Element to search for keywords in
* @param {string[]} keywords Keywords to highlight
* @param {boolean} caseSensitive Differenciate between capital and lowercase letters
* @param {string} cls Class to apply to the highlighted keyword
*/
function highlight(elem, keywords, caseSensitive = false, cls = 'highlight') {
const flags = caseSensitive ? 'gi' : 'g';
// Sort longer matches first to avoid
// highlighting keywords within keywords.
keywords.sort((a, b) => b.length - a.length);
Array.from(elem.childNodes).forEach(child => {
const keywordRegex = RegExp(keywords.join('|'), flags);
if (child.nodeType !== 3) { // not a text node
highlight(child, keywords, caseSensitive, cls);
} else if (keywordRegex.test(child.textContent)) {
const frag = document.createDocumentFragment();
let lastIdx = 0;
child.textContent.replace(keywordRegex, (match, idx) => {
const part = document.createTextNode(child.textContent.slice(lastIdx, idx));
const highlighted = document.createElement('span');
highlighted.textContent = match;
highlighted.classList.add(cls);
frag.appendChild(part);
frag.appendChild(highlighted);
lastIdx = idx + match.length;
});
const end = document.createTextNode(child.textContent.slice(lastIdx));
frag.appendChild(end);
child.parentNode.replaceChild(frag, child);
}
});
}
// Highlight all keywords found in the page
highlight(document.body, ['lorem', 'amet', 'autem']);
.highlight {
background: lightpink;
}
<p>Hello world lorem ipsum dolor sit amet, consectetur adipisicing elit. Est vel accusantium totam, ipsum delectus et dignissimos mollitia!</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Numquam, corporis.
<small>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium autem voluptas perferendis dolores ducimus velit error voluptatem, qui rerum modi?</small>
</p>
আমিও এর মতো কিছু ব্যবহার করার পরামর্শ দেব পালাবার স্ট্রিং-regexp আপনার কীওয়ার্ড বিশেষ অক্ষর আছে যা regexes মধ্যে পলান করা প্রয়োজন হবে থাকতে পারে যদি:
const keywordRegex = RegExp(keywords.map(escapeRegexp).join('|')), flags);
আমার একই সমস্যা রয়েছে, একটি গুচ্ছ পাঠ্য একটি এক্সএমএলএইচটিপি অনুরোধের মাধ্যমে আসে। এই পাঠ্যটি এইচটিএমএল বিন্যাসিত। আমি প্রতিটি ঘটনা হাইলাইট করা প্রয়োজন।
str='<img src="brown fox.jpg" title="The brown fox" />'
+'<p>some text containing fox.</p>'
সমস্যাটি হ'ল ট্যাগগুলিতে আমার পাঠ্য হাইলাইট করার দরকার নেই। উদাহরণস্বরূপ আমাকে শিয়াল হাইলাইট করা প্রয়োজন:
এখন আমি এটি দিয়ে প্রতিস্থাপন করতে পারি:
var word="fox";
word="(\\b"+
word.replace(/([{}()[\]\\.?*+^$|=!:~-])/g, "\\$1")
+ "\\b)";
var r = new RegExp(word,"igm");
str.replace(r,"<span class='hl'>$1</span>")
আপনার প্রশ্নের উত্তর দেওয়ার জন্য: আপনি জিজেটি রেজিপ্যাক্স বিকল্পগুলিতে ছেড়ে দিতে পারেন এবং কেবলমাত্র প্রথম ঘটনাটি প্রতিস্থাপন করা হবে তবে এটি এখনও ইমগ এসসিআর সম্পত্তি হিসাবে রয়েছে এবং চিত্র ট্যাগটি নষ্ট করে:
<img src="brown <span class='hl'>fox</span>.jpg" title="The brown <span
class='hl'>fox</span> />
এইভাবেই আমি এটি সমাধান করেছি তবে ভাবছিলাম যে এর থেকে আরও ভাল উপায় আছে কি না, এমন কিছু যা আমি নিয়মিত প্রকাশে মিস করেছি:
str='<img src="brown fox.jpg" title="The brown fox" />'
+'<p>some text containing fox.</p>'
var word="fox";
word="(\\b"+
word.replace(/([{}()[\]\\.?*+^$|=!:~-])/g, "\\$1")
+ "\\b)";
var r = new RegExp(word,"igm");
str.replace(/(>[^<]+<)/igm,function(a){
return a.replace(r,"<span class='hl'>$1</span>");
});
<img src="word">
বা ঝামেলা ছাড়াই কাজ করেছিল <a href="word">
।
দ্রষ্টব্য: আমি অনেক কিছুতে @ স্টেফানের সাথে একমত হওয়ার পরে আমার কেবল একটি সাধারণ ম্যাচ হাইলাইট করা দরকার:
module myApp.Search {
'use strict';
export class Utils {
private static regexFlags = 'gi';
private static wrapper = 'mark';
private static wrap(match: string): string {
return '<' + Utils.wrapper + '>' + match + '</' + Utils.wrapper + '>';
}
static highlightSearchTerm(term: string, searchResult: string): string {
let regex = new RegExp(term, Utils.regexFlags);
return searchResult.replace(regex, match => Utils.wrap(match));
}
}
}
এবং তারপরে প্রকৃত ফলাফলটি তৈরি করা:
module myApp.Search {
'use strict';
export class SearchResult {
id: string;
title: string;
constructor(result, term?: string) {
this.id = result.id;
this.title = term ? Utils.highlightSearchTerm(term, result.title) : result.title;
}
}
}
এইচটিএমএল 5 যেহেতু আপনি <mark></mark>
পাঠ্য হাইলাইট করতে ট্যাগ ব্যবহার করতে পারেন । আপনি এই ট্যাগগুলির মধ্যে কিছু পাঠ্য / কীওয়ার্ড মোড়ানোর জন্য জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন। এখানে পাঠ্যটি কীভাবে চিহ্নিত এবং চিহ্নিত করতে হবে তার একটি ছোট্ট উদাহরণ।
innerHTML
বিপদজনক. এটি ইভেন্টগুলি মুছে ফেলবে।
2019 এর দ্রুত এগিয়ে, ওয়েব এপিআই-তে এখন পাঠ্যকে হাইলাইট করার জন্য স্থানীয়ভাবে সমর্থন রয়েছে:
const selection = document.getSelection();
selection.setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset);
এবং আপনি যেতে ভাল! anchorNode
হল নির্বাচন নোড, focusNode
নির্বাচন শেষ নোড। এবং, যদি সেগুলি পাঠ্য নোড offset
হয় তবে তা সংশ্লিষ্ট নোডগুলির মধ্যে শুরু এবং শেষ চরিত্রের সূচক the এখানে ডকুমেন্টেশন দেওয়া আছে
এমনকি তাদের একটি লাইভ ডেমো রয়েছে
আমিও ভাবছিলাম যে আপনি এই বিষয়ে যা শিখলেন তা চেষ্টা করতে পারেন পোস্টে ।
আমি ব্যবহার করতাম:
function highlightSelection() {
var userSelection = window.getSelection();
for(var i = 0; i < userSelection.rangeCount; i++) {
highlightRange(userSelection.getRangeAt(i));
}
}
function highlightRange(range) {
var newNode = document.createElement("span");
newNode.setAttribute(
"style",
"background-color: yellow; display: inline;"
);
range.surroundContents(newNode);
}
<html>
<body contextmenu="mymenu">
<menu type="context" id="mymenu">
<menuitem label="Highlight Yellow" onclick="highlightSelection()" icon="/images/comment_icon.gif"></menuitem>
</menu>
<p>this is text, select and right click to high light me! if you can`t see the option, please use this<button onclick="highlightSelection()">button </button><p>
আপনি এটি এখানে চেষ্টা করে দেখতেও পারেন : http://henriquedonati.com / প্রকল্প / এক্সটেনশন / এক্সটেনশন। html
এক্সসি
আমরা যদি এটিও পৃষ্ঠা লোডে হাইলাইট করতে চাই তবে একটি নতুন উপায় আছে।
শুধু যোগ কর #:~:text=Highlight%20These
এই লিঙ্কটি অ্যাক্সেস করার চেষ্টা করুন
/programming/38588721#:~:text=Highlight%20a%20text
ব্যবহার করে রেঞ্জের ধরণে আউটসাইড কনটেন্টস () পদ্ধতি । এটির একমাত্র যুক্তি এমন একটি উপাদান যা এই ব্যাপ্তিটি মোড়বে।
function styleSelected() {
bg = document.createElement("span");
bg.style.backgroundColor = "yellow";
window.getSelection().getRangeAt(0).surroundContents(bg);
}