Javascript iframe中的访问

Javascript iframe中的访问,javascript,firefox,linkify,Javascript,Firefox,Linkify,我使用linkify派生代码的一小段代码从Firefox扩展访问网页中的所有文本索引节点。这看起来像这样,所以没有什么特别有趣的: var notInTags=[ 'a', 'head', 'noscript', 'option', 'script', 'style', 'title', 'textarea' ]; var xpath = ".//text()[not(ancestor::"+notInTags.join(') and not(ancestor::')+

我使用linkify派生代码的一小段代码从Firefox扩展访问网页中的所有文本索引节点。这看起来像这样,所以没有什么特别有趣的:

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=函数(候选函数){
//这修复了重定向页面使用框架的情况(主要是搜索引擎等)
常量urlRegex=/\b(https?:\/\/[^\s+\“\]+)/ig;
var framesets=window.content.document.getElementsByTagName('frame','iframe','frameset');
对于(var i=0;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'); 
    }

}
}
rsfindmod.searchiframes=函数(候选项、框架、文档列表){
//这修复了重定向页面使用框架的情况(主要是搜索引擎等)
常量帧集=frame.frames;
对于(var i=0;i
您需要
iframe.contentDocument
(或
iframe.contentWindow.document
,但前者更简单)。

您需要
iframe.contentDocument
(或
iframe.contentWindow.document
,但前者更简单).

一点也不喜欢。请参阅第一篇文章,了解完整的函数。甚至没有达到测试警报的程度。理论上,这应该是找到页面上的所有iFrame/Frameset,将它们添加到数组“Frameset”,然后将所有文本节点推送到候选数组。再次更新我得到的内容,以便在之前添加URL测试或者我尝试访问contentDocument。这仍然不起作用,但也不会使Firefox完全不稳定!您的子帧是否来自不同的来源(例如广告服务器)?如果是,那么您当然无法获取其内容。啊,这就是为什么:(我正在尝试修复一个通过文件搜索引擎重定向的页面。原始页面显示在一个iframe中,在搜索引擎的服务器上显示在一个页面中。有什么简单的方法吗?我想我可以用抓取器做些什么,然后以某种方式将其作为普通文档处理?一点也不喜欢。请参阅第一篇文章。)对于完整的函数。甚至没有达到测试警报的程度。理论上,这应该是找到页面上的所有iFrame/FrameSet,将它们添加到数组“FrameSet”,然后将所有文本节点推送到候选数组。在尝试访问contentDocument之前,再次更新我得到的内容以添加URL测试。这仍然不起作用“不起作用,但也不会让Firefox完全摇摆不定!您的子帧是否来自不同的来源(例如广告服务器)?如果是,那么您当然无法获取其内容。啊,这就是为什么:(我正试图修复一个通过文件搜索引擎重定向的页面。原始页面显示在一个iframe中,在搜索引擎的服务器上显示在一个页面中。有什么简单的方法吗?我想我可以用抓取器做些什么,然后以某种方式将其作为普通文档处理?
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'); 
    }

}
}