有没有办法获取文本节点的边界矩形?
getBoundingClientRect()方法仅在元素上定义,父元素比实际文本节点大.
我正在尝试编写一个书签,doSomething(textNode)在文档的所有可见文本实例上调用该函数.
doSomething(),只是为了好玩,通过替换传入其中的textNode的textContent,用"derp"替换每个单词.但是,这会使一些空文本节点中包含单词,因此会破坏网页.
有没有办法doSomething()只调用每个包含单词的textNode?
function recurse(element)
{
if (element.childNodes.length > 0)
for (var i = 0; i < element.childNodes.length; i++)
recurse(element.childNodes[i]);
if (element.nodeType == Node.TEXT_NODE && element.nodeValue != '')
doSomething(element);
}
var html = document.getElementsByTagName('html')[0];
recurse(html);
Run Code Online (Sandbox Code Playgroud) 我想在textNode中添加一个元素.例如:我有一个函数,用于在元素的textNode中搜索字符串.当我找到它时,我想用HTML元素替换.那有什么标准吗?谢谢.
我的目标是更新JsonNode中的一些文本字段.
List<JsonNode> list = json.findValues("fieldName");
for(JsonNode n : list){
// n is a TextNode. I'd like to change its value.
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何做到这一点.你有什么建议吗?
大家好,这是我的jQuery部分,为我的页面制作菜单.
function fetchmenus() {
$.getJSON('sys/classes/fetch.php?proccess=1', function(status) {
// get line status
$.each(status, function(i, item) {
if (item.id == "1") {
active = "class='active'";
lastpageid = item.href;
}
else {
active = "class='nonactive'";
}
$('<li id="' + item.href + '" ' + active + '><a href="#' + item.href + '">' + item.menuTitle + '<span class="menuspan" id="' + item.href + '"></span></a></li>').appendTo('#menuarea ul#mainmenu');
});
});
}
Run Code Online (Sandbox Code Playgroud)
我想要做的就是在item.menuTitle中<a,而是在<span>
目前我是这样做的:
$('ul#mainmenu li').live('click', function(event) {
//alert(this.id);
$("li#" + lastpageid).removeClass();
fetchpage(this.id);
$("#largemenutop").html($(this).text()); …Run Code Online (Sandbox Code Playgroud) 我已经使用了一些按钮了一段时间,因为它们使用位置相对和顶部:1px在:active伪类中点击它们具有抑郁效果.
我遇到了没有触发的点击事件的问题,结果是由于mousedown和mouseup事件没有在同一个元素上触发.我做了一些摆弄,以确保最内层元素覆盖整个按钮,并发现问题仍然存在.
如果我在文本上点击右键,然后链接跳下(射击鼠标按下事件),然后备份(触发MouseUp事件),但是点击并不会发生.如果我在文本中间很好地点击或者很好地远离文本,那么一切都很好.
我能想到的这里唯一的一点是,mousedown事件射击的textNode和鼠标松开被锚元素作为射击的textNode光标下不再.捕获事件对象和使用萤火虫在目标看结果表明是不是这样的,但我实在想不出另一种解释.阅读一下我可以找到一些关于在Safari中的textNodes上触发的事件的提及,但没有关于这种不匹配的事情.
以下代码段应该允许您复制问题.请记住,你必须在文本,或者像素或两个以上的顶部点击右键,这个问题只有一行像素发生:
<style>
a.button-test {
display: inline-block;
padding: 20px;
background: red;
}
.button-test:active {
position: relative;
top: 1px;
}
</style>
<a class="button-test" href="#">Clickedy click</a>
Run Code Online (Sandbox Code Playgroud)
乱搞与CSS,不使用内联块,提高了生产线高度,而不是填充等似乎并不在这里有一个效果.我尝试过很多种组合.我大部分的测试已经在Firefox做是为了让我绑定到事件并记录发生了什么事情通过萤火,但我在其他浏览器中也遇到了这个问题.
除了失去积极的跳跃之外,有没有人可以提供任何灵感?如果可以的话,我真的想保持这种效果.
十分感谢,
Dom(没有双关语)
我想在div中创建一个包含文本字符串的所有html元素的数组,例如
<p>some string</p>.
Run Code Online (Sandbox Code Playgroud)
我不想得到字符串,我希望数组项是元素(在示例中,将是p节点).我事先不知道字符串是什么,所以我找不到匹配的字符串值.我也不希望空文本节点最终出现在数组中.
谢谢!
我总是只获得有效XML文本节点的前4096个字符怎么样?(使用JavaScript ...)是一个有限的文本节点?
如果你写下面的代码:
const e = document.body.firstChild;
if (e.nodeType === Node.TEXT_NODE)
console.log(e.data);
Run Code Online (Sandbox Code Playgroud)
您将在以下位置收到此错误e.data:
TS2339:“ChildNode”类型上不存在属性“data”。
而如果条件为真 ( e.nodeType === Node.TEXT_NODE) 则e除了常规ChildNode属性之外还有一些其他属性,例如data和wholeText。
我应该转换为什么类型(除了any)?
我预先格式化了包含换行符和多空格的字符串,我想将它们附加到文本节点中.
<pre id="bar"></pre>
<script>
var string = "Preformatted"
+ "\n" // \r, \r\n, \n\r or what else?
+ "multispace string";
var text = document.createTextNode(string);
document.getElementById('bar').appendChild(text);
</script>
Run Code Online (Sandbox Code Playgroud)
我试图采用线路断路器:
\n 在所有浏览器中打破行,但在IE(我正在测试7)成为一个空间\r 仅在IE中打破行\r\n 适用于所有浏览器,但在IE中,第二行开头的空间很恐怖\n\r 总而言之,但是在IE中,第一行末尾的空间对于我的布局来说是不可接受的.我无法使用<br>innerHTML,因为IE会折叠多个空格.
jQuery .text(string)具有完全相同的行为.appendChild(createTextNode(string))
如何插入跨浏览器换行符?
最终,如何轻松检测浏览器是否支持\n或\r?
textnode ×10
javascript ×6
dom ×2
jquery ×2
bookmarklet ×1
bounding-box ×1
child-nodes ×1
click ×1
dom-node ×1
events ×1
html ×1
jackson ×1
java ×1
json ×1
line-breaks ×1
menu ×1
mouse ×1
pre ×1
recursion ×1
replace ×1
typescript ×1
xml ×1