【发布时间】:2011-04-24 13:13:17
【问题描述】:
我正在使用链接化派生代码的简短 sn-p 从 Firefox 扩展访问网页中的所有文本 inode。这看起来像这样,所以没什么特别有趣的:
var notInTags=[
'a', 'head', 'noscript', 'option', 'script', 'style', 'title', 'textarea'
];
var xpath = ".//text()[not(ancestor::"+notInTags.join(') and not(ancestor::')+")]";
var candidates = window.content.document.evaluate(xpath, window.content.document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
有没有人建议最好的方法来从任何存在的 iframe 中获取文本节点? 具体来说,是使用
iframe.window.content.document
可能会带我到任何地方(似乎没有),还是我在找错树?
干杯:)
编辑 2:这是完整的更新功能(再次)
rsfindmod.searchiframes= function(candidates){
//This fixes cases where a redirecting page uses frames (Primarily search engines etc)
const urlRegex = /\b(https?:\/\/[^\s+\"\<\>]+)/ig;
var framesets = window.content.document.getElementsByTagName('frame','iframe','frameset');
for (var i = 0; i < framesets.length; i++) {
if (urlRegex.test(framesets[i])) {
alert('test');
var document2 = framesets[i].contentDocument;
var notInTags=[
'a', 'head', 'noscript', 'option', 'script', 'style', 'title', 'textarea'
];
var xpath = ".//text()[not(ancestor::"+notInTags.join(') and not(ancestor::')+")]";
var textnodes = document2.evaluate(xpath, document2, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < textnodes.length; i++) {
candidates.push(textnodes[i]);
}
}
}
}
编辑 3:更好的功能?
rsfindmod.searchiframes= function(candidates, frame, documentList){
//This fixes cases where a redirecting page uses frames (Primarily search engines etc)
const framesets = frame.frames;
for (var i = 0; i < framesets.length; i++) {
var document2 = framesets[i].contentWindow.document;
var notInTags=[
'a', 'head', 'noscript', 'option', 'script', 'style', 'title', 'textarea'
];
alert('test');
var xpath = ".//text()[not(ancestor::"+notInTags.join(') and not(ancestor::')+")]";
var textnodes = document2.evaluate(xpath, document2, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < textnodes.length; i++) {
candidates.push(textnodes[i]);
alert('test1');
}
}
}
【问题讨论】:
标签: javascript firefox linkify