Rah*_*med 13 javascript recursion bookmarklet textnode
我正在尝试编写一个书签,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)
小智 10
改变这个......
element.nodeValue != ''
Run Code Online (Sandbox Code Playgroud)
对...
/\S/.test(element.nodeValue)
Run Code Online (Sandbox Code Playgroud)
这使用/\S/正则表达式,它搜索至少一个非空格字符.
您可能需要进一步定义"单词"的含义.我认为这意味着你只排除了只有空格的节点.
在支持的浏览器中String.prototype.trim,这将是另一种选择......
element.nodeValue.trim() != ''
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6769 次 |
| 最近记录: |