2012-12-18 48 views
0

我试图追加到$('body'),但有些网站在iframe中使用完整的html页面,这意味着它 - 页面有两个 - 或更多 - body标签,我试图使用$('body')。first(),但没有运气,有任何想法? html标签也一样。阻止jQuery追加到iframe

编辑1:根据请求显示一些代码,我会进一步解释,我创建一个铬扩展,附加一个固定的div到当前页面,一切正常工作时,只有一个html/body标签,除了div被附加到页面中的所有html/body标签之外,正如有人所说的“给它一个ID”,我不能,这不是我的页面,我不能真正控制生成的服务器DOM,我只能注入它,反正这里是处理附加div的代码。

formDiv = jQuery('<div/>', { 
    id : 'fform', 
    class :'_fform', 
    html : fhtml, 
    style : 'left:' + document.body.scrollLeft + ';top:' + document.body.scrollTop 
}) 

$('html').first().append(formDiv); 

编辑2:我怀疑它是与在现在的Chrome扩展程序清单 “all_frames”。

+0

给一个ID? – 472084

+0

$('body')。first()应该可以工作,即使只有一个主体。你能告诉我们一些代码吗? – Moseleyi

+0

'$('body')。append('stuff here');'不会将任何内容附加到iframe,只能附加到当前文档中的任何''标签。请澄清问题,如果可能的话,在jsfiddle中构造一个测试用例。 –

回答

1

检查网站是否有框架,并采取相应措施?

formDiv = jQuery('<div/>', { 
     id : 'fform', 
    'class' :'_fform', 
     html : fhtml, 
     style : 'left:' + document.body.scrollLeft + ';top:' + document.body.scrollTop 
}); 
if (top === self) { 
    $('html').append(formDiv); 
} else { 
    $(parent.document).append(formDiv); 
} 

在另一方面,你通常需要访问contextWindow追加到一个iFrame,所以只是针对常规标签should'nt是一个问题。

+0

你以间接的方式回答了我,它是chrome清单文件中的“all_frames”选项,一旦我将它设置为默认值(false),现在事情就像它应该的那样工作。 –