如何在带有 iframe 的页面中仅附加到主体标签?
Posted
技术标签:
【中文标题】如何在带有 iframe 的页面中仅附加到主体标签?【英文标题】:How to append to just the main body tag, in a page with iframes? 【发布时间】:2015-11-25 23:23:01 【问题描述】:我正在开发一个 Greasemonkey 脚本来在 body 标记之后添加一个 div,这里是 jQuery:
$("body:first").append (
'<div id="btn" style="width:50px;display:block">SHOW</div> <div id="gmPopupContainer" style="display:none">my text here</div>'
);
只要页面上只有一个body标签就可以正常工作,但是当网页上有iframe时就会出现问题。它附加到嵌套在 iframe 中的所有正文。
我尝试了许多 jQuery 选择器,但都没有成功。这样做的正确方法是什么?
【问题讨论】:
【参考方案1】:一般情况下,在元数据块中使用@noframes
Doc来阻止脚本在 iframe 中运行。
或者,在这种情况下,您也可以使用类似:
var topmostFramesMainBody = $(top.document.body).first ();
如果这不起作用,提供My very simple Greasemonkey script is not running? 中指定的详细信息。 (请注意,您应该始终提供这些详细信息。)
【讨论】:
【参考方案2】:你可以$("<div id="btn" ...>SHOW</div>").insertAfter('body');
【讨论】:
它也不起作用,因为它会插入在网页上找到的所有正文标签之后,包括 iframe 中的标签,我什至尝试过 $('document.body').我需要参考主文档的正文并丢弃所有其余部分 好的,给你的主体一个ID:<body id="mainBody">...</body>
然后做$("<div id="btn" ...>SHOW</div>").insertAfter('body.mainBody');
我不能给 body 一个 id 因为我正在写一个跨站点的greasemonkey 脚本所以我不控制网页。以上是关于如何在带有 iframe 的页面中仅附加到主体标签?的主要内容,如果未能解决你的问题,请参考以下文章