在这篇文章中,我们将为您详细介绍如何用span填充突出显示的文本并在javascript中放置相对于它的div?的内容,并且讨论关于怎么给span赋值的相关问题。此外,我们还会涉及一些关于java–可
在这篇文章中,我们将为您详细介绍如何用span填充突出显示的文本并在javascript中放置相对于它的div?的内容,并且讨论关于怎么给span赋值的相关问题。此外,我们还会涉及一些关于java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?、javascript – html5中的文字突出显示、javascript – JQuery突出显示Div的内部文本,OnClick、javascript – 交互式选择突出显示浏览器中的文本的知识,以帮助您更全面地了解这个主题。
本文目录一览:- 如何用span填充突出显示的文本并在javascript中放置相对于它的div?(怎么给span赋值)
- java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?
- javascript – html5中的文字突出显示
- javascript – JQuery突出显示Div的内部文本,OnClick
- javascript – 交互式选择突出显示浏览器中的文本
如何用span填充突出显示的文本并在javascript中放置相对于它的div?(怎么给span赋值)
我的最终目标是让用户能够:
>从段落中选择文本
>将文本包装在一个范围内
>在选择的末尾放置一个操作按钮/ div,他们可以单击以执行进一步操作
到目前为止,这是我的代码:
function discussion(){
var $this = this;
$(document).bind("mouseup",function(){
$this.selectText($this);
});
}
discussion.prototype.selectText = function($this){
var selection = $this.getSelectedText();
if(selection.length > 3){
console.log(selection);
var spn = '<span>' + selection + '</span>';
$(this).html($(this).html().replace(selection, spn));
//ERROR here; it says that it can't replace() on undefined $(this).html()
}
}
discussion.prototype.getSelectedText = function(){
if(window.getSelection){
return window.getSelection().toString();
}
else if(document.getSelection){
return document.getSelection();
}
else if(document.selection){
return document.selection.createrange().text;
}
}
正如您所料,到目前为止,我可以使用window.getSelection().toString()获取选择的文本.如果我删除.toString(),我会得到一个Selection对象.有了这个,我可以使用window.getSelection().anchorNode.parentNode来获取我需要的大部分信息.
我还看到Selection.anchorOffset和Selection.extentOffset将给出我选择的字符范围.有没有办法可以使用这些信息来放置跨度?
我猜我的问题是:
>为什么这段代码不包含div中的选择?
>这会因同一文本的多个实例而失败吗?
>在使用span或inline-block div或其他东西包装选区后,我是否能够获得(并使用)其位置来定位额外的按钮/ div?
哎呀,谢谢你的时间!
编辑:我在这里添加了一个JS小提琴:http://jsfiddle.net/nn62G/
解决方法:
getSelectedText返回的值是选择而不是DOM中的元素.这就是为什么你的html函数的cal失败,选择没有这样的属性.
您可以按照以下方式执行所需操作,将要处理的文档部分设置为contentEditable,例如< p>或者< div>.当您在该区域内选择时,您可以使用document.activeElement获取HTML元素.如果在contentEdiatble区域外选择,则activeElement将返回body元素.您可以处理的activeElement:
document.activeElement.innerHTML =
document.activeElement.innerHTML.replace (selection, spn);
但是,如果您将文档的某些部分编辑为可编辑的其他内容,则可能不需要.更严重的是,如果所选文本多次出现,则无法确定实际选择了哪一个,因此这可能无法解决您的问题.
更新了小提琴here
java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?
这可能很难解释功能,所以这里是一个gif的例子:
所以,你可以看到,如果你突出显示一段文本,然后,在这个例子中,按(它将括弧中突出显示的文本.
当我在Eclipse中尝试这个,突出显示文本,然后按(只是替换我突出显示而不是包装它.
有没有办法在Eclipse中获得这个功能?
解决方法
这是一个跛脚的解决方案,但它更快,因为eclipse创建引号并将光标放在中间.
javascript – html5中的文字突出显示
我正在尝试使用uni代码编写telugu文本,以便我可以根据声音更改为多种颜色来突出显示文本.因为我使用的是html5和js
<div>ప</div>
<div>పా</div>
通过使用
$("#paa").animate({ color: "blue" }, 500);
我可以改变字母的整个颜色但是
现在我想强调那封信的某些部分.请建议如何做到.???
解决方法:
有一些css技巧来伪造background-clip:text;或类似的东西SVG.
span {
position:relative;
color:green;
}
span:before {
position:absolute;
top:0;
left:0;
overflow:hidden;
content:attr(data-text);
color:blue;
height:0.7em;
overflow:hidden;
animation: txtclr 4s infinite;
}
p {
background:yellow;
color:rgba(128, 0, 128 , 0.5);
font-size:2em;
font-weight:bold;
background:linear-gradient(to bottom,lightgray 50%,yellow 50%);
display:table;/* demo purpose to shrink to text size*/
Box-shadow:inset -3em 0 rgba(100,100,100,0.5);
}
@keyframes txtclr {
0% {
height:50%;
}
25%,75%{
height:0;
width:0;
}
50%{
height:100%;
}
}
<p><span data-text="my text">my text</span> and some other text </p>
运行代码段并查看从上到下填充蓝色的绿色文本.
没有添加前缀,以后的浏览器不需要它:)
javascript – JQuery突出显示Div的内部文本,OnClick
我正在尝试自动突出显示< pre>的文本因此复制起来更容易……以下是我一直在使用的内容:
jQuery( document ).ready( function() {
$( 'pre' ).click( function() {
$( this ).select();
var doc = document
, text = $( this )
, range, selection;
if( doc.body.createTextRange ) {
range = document.body.createTextRange();
range.movetoElementText( text );
range.select();
} else if( window.getSelection ) {
selection = window.getSelection();
range = document.createrange();
range.selectNodeContents( text );
selection.removeAllRanges();
selection.addRange( range );
}
} );
} );
pre {cursor:pointer;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre>This is Text</pre>
我搜索过的帖子都将“突出显示”称为背景颜色,但我想实际突出显示它,以便用户可以轻松复制.如何修改上面的JS,以便当用户点击文本时突出显示它?
解决方法:
你的代码非常适合.只需要进行一点改动.
text = $(this)
需要成为
text = this
您使用文本作为参数的函数是Vanilla JavaScript方法,因此期望DOM节点而不是jQuery对象.在这种情况下,“这个”本身就是一个DOM节点.但是,将它包装在$()中会将其转换为jQuery对象,然后由您稍后调用的函数无法使用.
jQuery( document ).ready( function() {
$( 'pre' ).click( function() {
$( this ).select();
var doc = document
, text = this
, range, selection;
if( doc.body.createTextRange ) {
range = document.body.createTextRange();
range.movetoElementText( text );
range.select();
} else if( window.getSelection ) {
selection = window.getSelection();
range = document.createrange();
range.selectNodeContents( text );
selection.removeAllRanges();
selection.addRange( range );
}
} );
} );
pre {cursor:pointer;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre>This is Text</pre>
javascript – 交互式选择突出显示浏览器中的文本
我需要的是通过Javascript在浏览器中突出显示文本的交互式选择.
更具体地说,我只想说我在div元素中有一堆文本,如下所示:
<div>The quick brown fox jumps over the lazy dog ... </div>
现在我想要做的是选择这个文本的某个范围并突出显示它(即“棕色狐狸”).我已经通过使用rangy.js来完成这项工作.
现在我真的想让这个选择/突出显示更具交互性,以便用户可以抓住选择的开头或结尾(使用某种句柄)并通过将当前选择的开头或结尾拖动到交互式来调整选择的大小.新的起点或终点.
我试图谷歌这个,但找不到任何东西.更糟糕的是,我完全不知道应该如何开始实施这样的事情.
或许有人可以指出我正确的方向,甚至可以更好地了解如何开始实施这样的事情.
非常感谢任何帮助……
解决方法:
这个问题相当复杂,并且由于浏览器之间缺乏一致性而受到阻碍.但是,我已经对这个问题进行了一定程度的成功.
Test out my solution with this jsfiddle
Edit: more robust solution
我不保证这适用于所有情况,我的测试仅限于文本到目前为止.还有一些问题需要解决,我将在不久的将来解决.但是,我认为它已经准备好在这里发布了.
方法
问题可分为几个步骤.首先,我们需要在用户的选择周围插入标记.尽管有一些必须解决的设计决策,但这并不困难.经过一些实验,我决定在标记位置直接插入文档;然后,更容易在这些标记之间选择内容.下面是插入标记方法.
function insertMarker (isBefore) {
var range;
if (window.getSelection) {
// IE9+ and non-IE
var sel = window.getSelection();
if (sel.getRangeAt) {
range = window.getSelection().getRangeAt(0);
range.collapse(isBefore);
}
} else if (document.selection && document.selection.createrange) {
// IE < 9
range = document.selection.createrange();
range.collapse(isBefore);
}
// Create the marker element and insert it into the DOM.
if (range) {
range.insertNode(createMarker(isBefore));
}
}
其次,用户必须能够在文档周围拖动这些标记,以便它们在字符/可选内容之间锁定.这可以使用document.caretPositionFromPoint(x,y)(标准)或document.caretRangeFromPoint(x,y)(WebKit)来实现.
第三,移动标记时,必须更新选择以反映此更改.这可以使用range.setStartAfter和range.setEndBefore来实现,尽管Range实现不同,但大多数浏览器都支持它们.
function selectSelection () {
if (window.getSelection) {
// IE9+ and non-IE
var sel = window.getSelection();
var range = document.createrange();
range.setStartAfter($(".marker").get(0));
range.setEndBefore($(".marker").get(1));
sel.removeAllRanges();
sel.addRange(range);
}
else if (document.selection && document.selection.createrange) {
// IE < 9
var range = document.selection.createrange();
range.setStartAfter($(".marker").get(0));
range.setEndBefore($(".marker").get(1));
}
}
关于如何用span填充突出显示的文本并在javascript中放置相对于它的div?和怎么给span赋值的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于java – 可以在Eclipse中突出显示一个语句,然后按引号/ etc ..来“包装”字符中突出显示的文本(像在SublimeText中)?、javascript – html5中的文字突出显示、javascript – JQuery突出显示Div的内部文本,OnClick、javascript – 交互式选择突出显示浏览器中的文本的相关知识,请在本站寻找。
本文标签: